Linux 3.5 compat, eops->encode_fh() takes inodes
authorRichard Yao <ryao@cs.stonybrook.edu>
Mon, 23 Jul 2012 17:55:48 +0000 (10:55 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 23 Jul 2012 19:29:23 +0000 (12:29 -0700)
The export_operations member ->encode_fh() has been updated to
take both the child and parent inodes.  This interface used to
take the child dentry and a bool describing if the parent is needed.

NOTE: While updating this code I noticed that we do not currently
cleanly handle the case where we're passed a connectable parent.
This code should be audited to make sure we're doing the right thing.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #784

60 files changed:
Makefile.in
cmd/Makefile.in
cmd/mount_zfs/Makefile.in
cmd/vdev_id/Makefile.in
cmd/zdb/Makefile.in
cmd/zfs/Makefile.in
cmd/zinject/Makefile.in
cmd/zpios/Makefile.in
cmd/zpool/Makefile.in
cmd/zpool_id/Makefile.in
cmd/zpool_layout/Makefile.in
cmd/ztest/Makefile.in
cmd/zvol_id/Makefile.in
config/kernel-encode-fh-inode.m4 [new file with mode: 0644]
config/kernel.m4
configure
dracut/90zfs/Makefile.in
dracut/Makefile.in
etc/Makefile.in
etc/init.d/Makefile.in
etc/zfs/Makefile.in
include/Makefile.in
include/linux/Makefile.in
include/sys/Makefile.in
include/sys/fm/Makefile.in
include/sys/fm/fs/Makefile.in
include/sys/fs/Makefile.in
lib/Makefile.in
lib/libavl/Makefile.in
lib/libefi/Makefile.in
lib/libnvpair/Makefile.in
lib/libshare/Makefile.in
lib/libspl/Makefile.in
lib/libspl/asm-generic/Makefile.in
lib/libspl/asm-i386/Makefile.in
lib/libspl/asm-x86_64/Makefile.in
lib/libspl/include/Makefile.in
lib/libspl/include/ia32/Makefile.in
lib/libspl/include/ia32/sys/Makefile.in
lib/libspl/include/rpc/Makefile.in
lib/libspl/include/sys/Makefile.in
lib/libspl/include/sys/dktp/Makefile.in
lib/libspl/include/sys/sysevent/Makefile.in
lib/libspl/include/util/Makefile.in
lib/libunicode/Makefile.in
lib/libuutil/Makefile.in
lib/libzfs/Makefile.in
lib/libzpool/Makefile.in
man/Makefile.in
man/man5/Makefile.in
man/man8/Makefile.in
module/zfs/zpl_export.c
scripts/Makefile.in
scripts/zpios-profile/Makefile.in
scripts/zpios-test/Makefile.in
scripts/zpool-config/Makefile.in
scripts/zpool-layout/Makefile.in
udev/Makefile.in
udev/rules.d/Makefile.in
zfs_config.h.in

index 6679a13..f47b28a 100644 (file)
@@ -90,6 +90,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 7575384..f1bc924 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 96a815a..2c119d3 100644 (file)
@@ -70,6 +70,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 7dee2e1..200c3ed 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 88ca38a..0879ca6 100644 (file)
@@ -70,6 +70,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index d4a1b41..707771d 100644 (file)
@@ -70,6 +70,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 477a1c8..2b1ef7d 100644 (file)
@@ -70,6 +70,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 0b10c1c..04b698c 100644 (file)
@@ -70,6 +70,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 3b8bf84..ef43eea 100644 (file)
@@ -70,6 +70,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index fc4cf45..7722b7b 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index ae536ed..0985b39 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 1687a2e..b55c2dc 100644 (file)
@@ -70,6 +70,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 10ec6da..6465352 100644 (file)
@@ -70,6 +70,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
diff --git a/config/kernel-encode-fh-inode.m4 b/config/kernel-encode-fh-inode.m4
new file mode 100644 (file)
index 0000000..287f62a
--- /dev/null
@@ -0,0 +1,24 @@
+dnl #
+dnl # 3.5.0 API change
+dnl # torvalds/linux@b0b0382bb4904965a9e9fca77ad87514dfda0d1c changed the
+dnl # ->encode_fh() callback to pass the child inode and its parents inode
+dnl # rather than a dentry and a boolean saying whether we want the parent.
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_ENCODE_FH_WITH_INODE], [
+       AC_MSG_CHECKING([whether eops->encode_fh() wants inode])
+       ZFS_LINUX_TRY_COMPILE([
+               #include <linux/exportfs.h>
+               int encode_fh(struct inode *inode, __u32 *fh, int *max_len,
+                             struct inode *parent) { return 0; }
+               static struct export_operations eops __attribute__ ((unused))={
+                       .encode_fh = encode_fh,
+               };
+       ],[
+       ],[
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_ENCODE_FH_WITH_INODE, 1,
+                         [eops->encode_fh() wants child and parent inodes])
+       ],[
+               AC_MSG_RESULT(no)
+       ])
+])
index 7d7f167..7c0b270 100644 (file)
@@ -49,6 +49,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_KERNEL_FALLOCATE
        ZFS_AC_KERNEL_CREATE_UMODE_T
        ZFS_AC_KERNEL_AUTOMOUNT
+       ZFS_AC_KERNEL_ENCODE_FH_WITH_INODE
        ZFS_AC_KERNEL_INSERT_INODE_LOCKED
        ZFS_AC_KERNEL_D_MAKE_ROOT
        ZFS_AC_KERNEL_D_OBTAIN_ALIAS
index 4c1c210..27d5973 100755 (executable)
--- a/configure
+++ b/configure
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether eops->encode_fh() wants inode" >&5
+$as_echo_n "checking whether eops->encode_fh() wants inode... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/exportfs.h>
+               int encode_fh(struct inode *inode, __u32 *fh, int *max_len,
+                             struct inode *parent) { return 0; }
+               static struct export_operations eops __attribute__ ((unused))={
+                       .encode_fh = encode_fh,
+               };
+
+int
+main (void)
+{
+
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build
+       echo "obj-m := conftest.o" >build/Makefile
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ENCODE_FH_WITH_INODE 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
        { $as_echo "$as_me:$LINENO: checking whether symbol insert_inode_locked is exported" >&5
 $as_echo_n "checking whether symbol insert_inode_locked is exported... " >&6; }
        grep -q -E '[[:space:]]insert_inode_locked[[:space:]]' \
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether eops->encode_fh() wants inode" >&5
+$as_echo_n "checking whether eops->encode_fh() wants inode... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/exportfs.h>
+               int encode_fh(struct inode *inode, __u32 *fh, int *max_len,
+                             struct inode *parent) { return 0; }
+               static struct export_operations eops __attribute__ ((unused))={
+                       .encode_fh = encode_fh,
+               };
+
+int
+main (void)
+{
+
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build
+       echo "obj-m := conftest.o" >build/Makefile
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ENCODE_FH_WITH_INODE 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+
+
        { $as_echo "$as_me:$LINENO: checking whether symbol insert_inode_locked is exported" >&5
 $as_echo_n "checking whether symbol insert_inode_locked is exported... " >&6; }
        grep -q -E '[[:space:]]insert_inode_locked[[:space:]]' \
index 8ab747c..e01e98e 100644 (file)
@@ -68,6 +68,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index e9376e1..9cac920 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 53fe585..465d89b 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 2249324..6bf44b2 100644 (file)
@@ -68,6 +68,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 5f36b78..ac7c6f9 100644 (file)
@@ -68,6 +68,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 026a6ad..a45d5a1 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 80cd72e..94d8ece 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 6e2229c..6df0fda 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index c5383e8..529681e 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index a121817..488c15f 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 8ef1491..0b63457 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index eb1177b..1382487 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 5a6043d..a376d73 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 88fb19c..184bce3 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 78a1ccd..3eb6a18 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 8a3d50f..226105c 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 935f476..75e8673 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index d4cbca2..b27a809 100644 (file)
@@ -68,6 +68,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 53f7743..19ed002 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 95754c3..33d4c72 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 668183f..015b034 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 5aff82a..8028675 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 2ee47ff..484e090 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 6f8e483..c115bf4 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 09d03e9..06665cd 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 3026368..7563bfe 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 7106d85..8a2b618 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 49f579a..f9ac261 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index f13cdd0..ac2de79 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 7ab2532..0421093 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index c5b3ffd..c53ef88 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index ad573d4..5ccad59 100644 (file)
@@ -69,6 +69,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 83c2ec9..41392a3 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 000f0af..fb52aeb 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index e0ca5c9..4a4e130 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index f82ee30..395c558 100644 (file)
 
 
 static int
+#ifdef HAVE_ENCODE_FH_WITH_INODE
+zpl_encode_fh(struct inode *ip, __u32 *fh, int *max_len, struct inode *parent)
+{
+#else
 zpl_encode_fh(struct dentry *dentry, __u32 *fh, int *max_len, int connectable)
 {
-       fid_t *fid = (fid_t *)fh;
        struct inode *ip = dentry->d_inode;
+#endif /* HAVE_ENCODE_FH_WITH_INODE */
+       fid_t *fid = (fid_t *)fh;
        int len_bytes, rc;
 
        len_bytes = *max_len * sizeof (__u32);
index 053ab80..092fb67 100644 (file)
@@ -68,6 +68,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index fb54f2a..3bcac7e 100644 (file)
@@ -68,6 +68,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 8797779..93bfc02 100644 (file)
@@ -68,6 +68,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index b4e1c9f..3563966 100644 (file)
@@ -68,6 +68,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index f6dc932..20047d2 100644 (file)
@@ -68,6 +68,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index cc2e150..10ad792 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index c566138..c01f95c 100644 (file)
@@ -68,6 +68,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
        $(top_srcdir)/config/kernel-d-obtain-alias.m4 \
+       $(top_srcdir)/config/kernel-encode-fh-inode.m4 \
        $(top_srcdir)/config/kernel-evict-inode.m4 \
        $(top_srcdir)/config/kernel-fallocate.m4 \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
index 0398fa2..7aebb8f 100644 (file)
 /* d_obtain_alias() is available */
 #undef HAVE_D_OBTAIN_ALIAS
 
+/* eops->encode_fh() wants child and parent inodes */
+#undef HAVE_ENCODE_FH_WITH_INODE
+
 /* sops->evict_inode() exists */
 #undef HAVE_EVICT_INODE