Whamcloud - gitweb
LU-18687 compat: move xarray to lustre_compat 14/58114/4
authorTimothy Day <timday@amazon.com>
Wed, 12 Feb 2025 01:35:30 +0000 (20:35 -0500)
committerOleg Drokin <green@whamcloud.com>
Thu, 13 Mar 2025 17:07:40 +0000 (17:07 +0000)
Migrate the backported xarray code to lustre_compat.
Along the way, create the needed build infrastructure
for lustre_compat. Currently, lustre_compat is built
into libcfs.ko.

Eventually, all of the Lustre/LNet compatability code
will live in lustre_compat - maintaining a clear
separation from the functional code in Lustre and LNet.

Test-Parameters: trivial
Signed-off-by: Timothy Day <timday@amazon.com>
Change-Id: I74249d0b5714bee3549bf42a8fede3f279bc37ee
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/58114
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Arshad Hussain <arshad.hussain@aeoncomputing.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
23 files changed:
autoMakefile.am
config/lustre-build.m4
config/lustre-toolchain.m4
libcfs/include/libcfs/linux/Makefile.am
libcfs/libcfs/Makefile.in
libcfs/libcfs/linux/Makefile.am
libcfs/libcfs/linux/linux-prim.c
lustre/include/lustre_compat.h
lustre/include/lustre_nrs_orr.h
lustre/include/obd.h
lustre/mdc/mdc_request.c
lustre_compat/Makefile.in [new file with mode: 0644]
lustre_compat/autoMakefile.am [new file with mode: 0644]
lustre_compat/include/.gitignore [new file with mode: 0644]
lustre_compat/include/Makefile.am [new file with mode: 0644]
lustre_compat/include/lustre_compat/.gitignore [new file with mode: 0644]
lustre_compat/include/lustre_compat/Makefile.am [new file with mode: 0644]
lustre_compat/include/lustre_compat/linux/.gitignore [new file with mode: 0644]
lustre_compat/include/lustre_compat/linux/Makefile.am [new file with mode: 0644]
lustre_compat/include/lustre_compat/linux/xarray.h [moved from libcfs/include/libcfs/linux/xarray.h with 100% similarity]
lustre_compat/lib/Makefile.in [new file with mode: 0644]
lustre_compat/lib/autoMakefile.am [new file with mode: 0644]
lustre_compat/lib/xarray.c [moved from libcfs/libcfs/linux/xarray.c with 99% similarity]

index 21aeec2..687a017 100644 (file)
 SUBDIRS := @LDISKFS_SUBDIR@ \
        . \
        @LUSTREIOKIT_SUBDIR@ \
+       lustre_compat \
        libcfs \
        lnet \
        lustre
 
 DIST_SUBDIRS := ldiskfs \
        lustre-iokit \
+       lustre_compat \
        libcfs \
        lnet \
        lustre \
index 93f2164..7b2653a 100644 (file)
@@ -433,6 +433,23 @@ AC_DEFUN([LB_CONFIG_FILES], [
 ])
 
 #
+# LB_COMPAT_CONFIG_FILES
+#
+# build-specific config files (lustre_compat)
+#
+AC_DEFUN([LB_COMPAT_CONFIG_FILES], [
+       AC_CONFIG_FILES(
+               lustre_compat/Makefile
+               lustre_compat/lib/Makefile
+               lustre_compat/autoMakefile
+               lustre_compat/lib/autoMakefile
+               lustre_compat/include/Makefile
+               lustre_compat/include/lustre_compat/Makefile
+               lustre_compat/include/lustre_compat/linux/Makefile
+       )
+])
+
+#
 # LB_CONFIG_SERVERS
 #
 AC_DEFUN([LB_CONFIG_SERVERS], [
@@ -692,6 +709,7 @@ LB_CONFIG_HEADERS
 LPLUG_CONFIGURE
 LIBCFS_CONFIG_FILES
 LB_CONFIG_FILES
+LB_COMPAT_CONFIG_FILES
 LN_CONFIG_FILES
 LC_CONFIG_FILES
 LPLUG_CONFIG_FILES
index 571df1d..1e9f710 100644 (file)
@@ -97,7 +97,7 @@ CCASFLAGS="-Wall -fPIC -D_GNU_SOURCE"
 AC_SUBST(CCASFLAGS)
 
 # everyone builds against lnet and lustre kernel headers
-EXTRA_KCFLAGS="$EXTRA_KCFLAGS -g -I$PWD/libcfs/include -I$PWD/libcfs/include/libcfs -I$PWD/lnet/include/uapi -I$PWD/lnet/include -I$PWD/lustre/include/uapi -I$PWD/lustre/include"
+EXTRA_KCFLAGS="$EXTRA_KCFLAGS -g -I$PWD/libcfs/include -I$PWD/libcfs/include/libcfs -I$PWD/lnet/include/uapi -I$PWD/lnet/include -I$PWD/lustre/include/uapi -I$PWD/lustre/include -I$PWD/lustre_compat/include"
 AC_SUBST(EXTRA_KCFLAGS)
 ]) # LTC_PROG_CC
 
index 6d1ee9a..63043d1 100644 (file)
@@ -6,5 +6,5 @@
 
 EXTRA_DIST = linux-misc.h linux-fs.h linux-mem.h linux-time.h linux-cpu.h \
             linux-list.h linux-hash.h linux-wait.h linux-net.h \
-            generic-radix-tree.h glob.h refcount.h processor.h xarray.h \
+            generic-radix-tree.h glob.h refcount.h processor.h \
             linux-fortify-string.h
index 62cba0b..112db33 100644 (file)
@@ -6,12 +6,18 @@
 
 MODULES = libcfs
 
+COMPAT := @top_srcdir@/lustre_compat/lib/
+
+libcfs_dir := $(dir $(lastword $(MAKEFILE_LIST)))
+-include $(libcfs_dir)/../../lustre_compat/lib/Makefile
+
 libcfs-linux-objs := linux-prim.o
 libcfs-linux-objs += linux-hash.o
 libcfs-linux-objs += linux-wait.o
 libcfs-linux-objs += generic-radix-tree.o
 libcfs-linux-objs += glob.o
-libcfs-linux-objs += xarray.o
+
+libcfs-compat-objs += $(patsubst %,$(COMPAT)%,$(compat_objs))
 
 libcfs-crypto-objs := crypto.o fname.o hkdf.o hooks.o keyring.o
 libcfs-crypto-objs += keysetup.o keysetup_v1.o policy.o
@@ -23,7 +29,7 @@ libcfs-crypto-objs := $(addprefix crypto/,$(libcfs-crypto-objs))
 
 libcfs-all-objs := debug.o fail.o module.o tracefile.o
 
-libcfs-objs := $(libcfs-linux-objs) $(libcfs-all-objs)
+libcfs-objs := $(libcfs-linux-objs) $(libcfs-all-objs) $(libcfs-compat-objs)
 @LLCRYPT_TRUE@libcfs-objs += $(libcfs-crypto-objs)
 
 EXTRA_PRE_CFLAGS := -I@LUSTRE@/../libcfs/libcfs
index c58e879..e4027de 100644 (file)
@@ -8,5 +8,4 @@ EXTRA_DIST = linux-prim.c \
             linux-hash.c \
             linux-wait.c \
             generic-radix-tree.c \
-            glob.c \
-            xarray.c
+            glob.c
index a3b4c5a..ee2c0ba 100644 (file)
@@ -33,9 +33,7 @@
 #include <libcfs/linux/linux-wait.h>
 #include <libcfs/linux/linux-misc.h>
 #include <libcfs/linux/linux-mem.h>
-#ifndef HAVE_XARRAY_SUPPORT
-#include <libcfs/linux/xarray.h>
-#endif
+#include <lustre_compat/linux/xarray.h>
 #include <lustre_crypto.h>
 
 #ifndef HAVE_KTIME_GET_TS64
index a0ba4c2..7123a90 100644 (file)
 #include <linux/pagevec.h>
 #include <linux/workqueue.h>
 #include <libcfs/linux/linux-fs.h>
-#ifdef HAVE_XARRAY_SUPPORT
-#include <linux/xarray.h>
-#else
-#include <libcfs/linux/xarray.h>
-#endif
+#include <lustre_compat/linux/xarray.h>
 #include <obd_support.h>
 
 #ifdef HAVE_4ARGS_VFS_SYMLINK
index d297c59..6fbc73a 100644 (file)
 #ifndef _LUSTRE_NRS_ORR_H
 #define _LUSTRE_NRS_ORR_H
 
-#ifdef HAVE_XARRAY_SUPPORT
-#include <linux/xarray.h>
-#else
-#include <libcfs/linux/xarray.h>
-#endif
+#include <lustre_compat/linux/xarray.h>
 
 /**
  * ORR policy operations
index fc397e0..d030273 100644 (file)
@@ -19,7 +19,7 @@
 #include <linux/kobject.h>
 #include <linux/spinlock.h>
 #include <linux/sysfs.h>
-#include <libcfs/linux/xarray.h>
+#include <lustre_compat/linux/xarray.h>
 
 #include <uapi/linux/lustre/lustre_idl.h>
 #include <lustre_lib.h>
index 80a8e4a..6aba39e 100644 (file)
@@ -22,7 +22,7 @@
 #include <linux/delay.h>
 #include <linux/uidgid.h>
 #include <linux/device.h>
-#include <linux/xarray.h>
+#include <lustre_compat/linux/xarray.h>
 
 #include <lustre_errno.h>
 
diff --git a/lustre_compat/Makefile.in b/lustre_compat/Makefile.in
new file mode 100644 (file)
index 0000000..dadff32
--- /dev/null
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: GPL-2.0
+
+#
+# This file is part of Lustre, http://www.lustre.org/
+#
+
+obj-m += lib/
+
+@INCLUDE_RULES@
diff --git a/lustre_compat/autoMakefile.am b/lustre_compat/autoMakefile.am
new file mode 100644 (file)
index 0000000..5d9eb34
--- /dev/null
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: GPL-2.0
+
+#
+# This file is part of Lustre, http://www.lustre.org/
+#
+
+SUBDIRS = lib include
diff --git a/lustre_compat/include/.gitignore b/lustre_compat/include/.gitignore
new file mode 100644 (file)
index 0000000..10a7e8d
--- /dev/null
@@ -0,0 +1 @@
+/Makefile.in
diff --git a/lustre_compat/include/Makefile.am b/lustre_compat/include/Makefile.am
new file mode 100644 (file)
index 0000000..8303353
--- /dev/null
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: GPL-2.0
+
+#
+# This file is part of Lustre, http://www.lustre.org/
+#
+
+SUBDIRS = lustre_compat
+DIST_SUBDIRS = lustre_compat
diff --git a/lustre_compat/include/lustre_compat/.gitignore b/lustre_compat/include/lustre_compat/.gitignore
new file mode 100644 (file)
index 0000000..10a7e8d
--- /dev/null
@@ -0,0 +1 @@
+/Makefile.in
diff --git a/lustre_compat/include/lustre_compat/Makefile.am b/lustre_compat/include/lustre_compat/Makefile.am
new file mode 100644 (file)
index 0000000..d21ce25
--- /dev/null
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: GPL-2.0
+
+#
+# This file is part of Lustre, http://www.lustre.org/
+#
+
+SUBDIRS = linux
+DIST_SUBDIRS = linux
diff --git a/lustre_compat/include/lustre_compat/linux/.gitignore b/lustre_compat/include/lustre_compat/linux/.gitignore
new file mode 100644 (file)
index 0000000..10a7e8d
--- /dev/null
@@ -0,0 +1 @@
+/Makefile.in
diff --git a/lustre_compat/include/lustre_compat/linux/Makefile.am b/lustre_compat/include/lustre_compat/linux/Makefile.am
new file mode 100644 (file)
index 0000000..303749c
--- /dev/null
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: GPL-2.0
+
+#
+# This file is part of Lustre, http://www.lustre.org/
+#
+
+EXTRA_DIST = xarray.h
diff --git a/lustre_compat/lib/Makefile.in b/lustre_compat/lib/Makefile.in
new file mode 100644 (file)
index 0000000..944a5f5
--- /dev/null
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: GPL-2.0
+
+#
+# This file is part of Lustre, http://www.lustre.org/
+#
+
+compat_objs := xarray.o
+
+EXTRA_DIST = $(compat_objs:.o=.c)
+
+ifneq "$(MODULES)" "libcfs"
+@INCLUDE_RULES@
+endif
diff --git a/lustre_compat/lib/autoMakefile.am b/lustre_compat/lib/autoMakefile.am
new file mode 100644 (file)
index 0000000..3b1a5dc
--- /dev/null
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: GPL-2.0
+
+#
+# This file is part of Lustre, http://www.lustre.org/
+#
+
+MOSTLYCLEANFILES := @MOSTLYCLEANFILES@
similarity index 99%
rename from libcfs/libcfs/linux/xarray.c
rename to lustre_compat/lib/xarray.c
index 5bc9d76..833b024 100644 (file)
@@ -15,7 +15,7 @@
 #include <linux/export.h>
 #include <linux/list.h>
 #include <linux/slab.h>
-#include <libcfs/linux/xarray.h>
+#include <lustre_compat/linux/xarray.h>
 
 /*
  * Coding conventions in this file: