]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
UBUNTU: SAUCE: (no-up) Update zfs to 0.6.5.8-0ubuntu9
authorSeth Forshee <seth.forshee@canonical.com>
Mon, 30 Jan 2017 19:10:42 +0000 (13:10 -0600)
committerTim Gardner <tim.gardner@canonical.com>
Mon, 20 Feb 2017 03:57:58 +0000 (20:57 -0700)
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
23 files changed:
zfs/META
zfs/Makefile.in
zfs/aclocal.m4
zfs/config/kernel-bio-op.m4
zfs/config/kernel-generic_readlink.m4 [new file with mode: 0644]
zfs/config/kernel-req-flags.m4 [new file with mode: 0644]
zfs/config/kernel.m4
zfs/configure
zfs/contrib/Makefile.in
zfs/contrib/bash_completion.d/Makefile.in
zfs/contrib/dracut/90zfs/Makefile.in
zfs/contrib/dracut/Makefile.in
zfs/contrib/initramfs/Makefile.in
zfs/include/Makefile.in
zfs/include/linux/Makefile.in
zfs/include/linux/blkdev_compat.h
zfs/include/sys/Makefile.in
zfs/include/sys/fm/Makefile.in
zfs/include/sys/fm/fs/Makefile.in
zfs/include/sys/fs/Makefile.in
zfs/module/zfs/vdev_disk.c
zfs/module/zfs/zpl_inode.c
zfs/zfs_config.h.in

index f1521a93c9d4bc3ea4d1268858c4acc5b9b70fe2..3b323f8ff62b5b80834ad967c5195297d9c9a8f0 100644 (file)
--- a/zfs/META
+++ b/zfs/META
@@ -2,7 +2,7 @@ Meta:         1
 Name:         zfs
 Branch:       1.0
 Version:      0.6.5.8
-Release:      0ubuntu7
+Release:      0ubuntu9
 Release-Tags: relext
 License:      CDDL
 Author:       OpenZFS on Linux
index 7ef76b384554ab5c560c7b91a4de4ce7bada2945..32646a36c451ab5db1982db52991d099634bb2ef 100644 (file)
@@ -144,6 +144,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-follow-down-one.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-generic_io_acct.m4 \
+       $(top_srcdir)/config/kernel-generic_readlink.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
        $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-get-link.m4 \
@@ -161,6 +162,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-put-link.m4 \
        $(top_srcdir)/config/kernel-rename.m4 \
+       $(top_srcdir)/config/kernel-req-flags.m4 \
        $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-set-nlink.m4 \
        $(top_srcdir)/config/kernel-setattr-prepare.m4 \
index 38a462892932e6d310fffbc66854e2c0badfb120..72fe3c190ccc31398d192728c83ff8d8c98957a3 100644 (file)
@@ -1249,6 +1249,7 @@ m4_include([config/kernel-fmode-t.m4])
 m4_include([config/kernel-follow-down-one.m4])
 m4_include([config/kernel-fsync.m4])
 m4_include([config/kernel-generic_io_acct.m4])
+m4_include([config/kernel-generic_readlink.m4])
 m4_include([config/kernel-get-disk-ro.m4])
 m4_include([config/kernel-get-gendisk.m4])
 m4_include([config/kernel-get-link.m4])
@@ -1266,6 +1267,7 @@ m4_include([config/kernel-mount-nodev.m4])
 m4_include([config/kernel-open-bdev-exclusive.m4])
 m4_include([config/kernel-put-link.m4])
 m4_include([config/kernel-rename.m4])
+m4_include([config/kernel-req-flags.m4])
 m4_include([config/kernel-security-inode-init.m4])
 m4_include([config/kernel-set-nlink.m4])
 m4_include([config/kernel-setattr-prepare.m4])
index b4b699517a9edfc7fe8aa039f34ec91cac70b811..5559d6c7f8b5165dadf7772e0da17fa1de876473 100644 (file)
@@ -10,7 +10,7 @@ AC_DEFUN([ZFS_AC_KERNEL_REQ_OP_DISCARD], [
        ZFS_LINUX_TRY_COMPILE([
                #include <linux/blk_types.h>
        ],[
-               enum req_op op __attribute__ ((unused)) = REQ_OP_DISCARD;
+               int op __attribute__ ((unused)) = REQ_OP_DISCARD;
        ],[
                AC_MSG_RESULT(yes)
                AC_DEFINE(HAVE_REQ_OP_DISCARD, 1,
@@ -25,10 +25,10 @@ AC_DEFUN([ZFS_AC_KERNEL_REQ_OP_SECURE_ERASE], [
        ZFS_LINUX_TRY_COMPILE([
                #include <linux/blk_types.h>
        ],[
-               enum req_op op __attribute__ ((unused)) = REQ_OP_SECURE_ERASE;
+               int op __attribute__ ((unused)) = REQ_OP_SECURE_ERASE;
        ],[
                AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_REQ_OP_SECURE_DISCARD, 1,
+               AC_DEFINE(HAVE_REQ_OP_SECURE_ERASE, 1,
                    [REQ_OP_SECURE_ERASE is defined])
        ],[
                AC_MSG_RESULT(no)
@@ -41,7 +41,7 @@ AC_DEFUN([ZFS_AC_KERNEL_REQ_OP_FLUSH], [
        ZFS_LINUX_TRY_COMPILE([
                #include <linux/blk_types.h>
        ],[
-               enum req_op op __attribute__ ((unused)) = REQ_OP_FLUSH;
+               int op __attribute__ ((unused)) = REQ_OP_FLUSH;
        ],[
                AC_MSG_RESULT(yes)
                AC_DEFINE(HAVE_REQ_OP_FLUSH, 1,
@@ -65,3 +65,20 @@ AC_DEFUN([ZFS_AC_KERNEL_BIO_BI_OPF], [
                AC_MSG_RESULT(no)
        ])
 ])
+
+AC_DEFUN([ZFS_AC_KERNEL_HAVE_BIO_SET_OP_ATTRS], [
+       AC_MSG_CHECKING([whether bio_set_op_attrs is available])
+       ZFS_LINUX_TRY_COMPILE([
+               #include <linux/blk_types.h>
+       ],[
+               struct bio *bio __attribute__ ((unused)) = NULL;
+
+               bio_set_op_attrs(bio, 0, 0);
+       ],[
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_BIO_SET_OP_ATTRS, 1,
+                   [bio_set_op_attrs is available])
+       ],[
+               AC_MSG_RESULT(no)
+       ])
+])
diff --git a/zfs/config/kernel-generic_readlink.m4 b/zfs/config/kernel-generic_readlink.m4
new file mode 100644 (file)
index 0000000..914431d
--- /dev/null
@@ -0,0 +1,22 @@
+dnl #
+dnl # 4.10 API
+dnl #
+dnl # NULL inode_operations.readlink implies generic_readlink(), which
+dnl # has been made static.
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_GENERIC_READLINK_GLOBAL], [
+       AC_MSG_CHECKING([whether generic_readlink is global])
+       ZFS_LINUX_TRY_COMPILE([
+               #include <linux/fs.h>
+       ],[
+               int i __attribute__ ((unused));
+
+               i = generic_readlink(NULL, NULL, 0);
+       ],[
+               AC_MSG_RESULT([yes])
+               AC_DEFINE(HAVE_GENERIC_READLINK, 1,
+                         [generic_readlink is global])
+       ],[
+               AC_MSG_RESULT([no])
+       ])
+])
diff --git a/zfs/config/kernel-req-flags.m4 b/zfs/config/kernel-req-flags.m4
new file mode 100644 (file)
index 0000000..f608820
--- /dev/null
@@ -0,0 +1,19 @@
+dnl #
+dnl # 4.10 API
+dnl #
+dnl # The WRITE_* and READ_SYNC wrappers have been removed, and
+dnl # REQ_* flags should be used directly.
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_USE_REQ_FLAGS], [
+       AC_MSG_CHECKING([whether fops->aio_fsync() exists])
+       ZFS_LINUX_TRY_COMPILE([
+               #include <linux/fs.h>
+       ],[
+               unsigned int flags __attribute__ ((unused)) = READ_SYNC;
+       ],[
+               AC_MSG_RESULT(no)
+       ],[
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(USE_REQ_FLAGS, 1, [use REQ_* flags directly])
+       ])
+])
index 290d71b5ee6b271d580dbed0a8dd6c1da7bf06fb..de6890f2aeb0dc7df8b243d7e8b92ff0bdfd3773 100644 (file)
@@ -35,6 +35,8 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_KERNEL_BLK_QUEUE_MAX_SEGMENTS
        ZFS_AC_KERNEL_GET_DISK_RO
        ZFS_AC_KERNEL_GET_GENDISK
+       ZFS_AC_KERNEL_HAVE_BIO_SET_OP_ATTRS
+       ZFS_AC_KERNEL_GENERIC_READLINK_GLOBAL
        ZFS_AC_KERNEL_DISCARD_GRANULARITY
        ZFS_AC_KERNEL_CONST_XATTR_HANDLER
        ZFS_AC_KERNEL_XATTR_HANDLER_NAME
@@ -102,6 +104,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_KERNEL_GENERIC_IO_ACCT
        ZFS_AC_KERNEL_RENAME_WANTS_FLAGS
        ZFS_AC_KERNEL_HAVE_GENERIC_SETXATTR
+       ZFS_AC_KERNEL_USE_REQ_FLAGS
 
        AS_IF([test "$LINUX_OBJ" != "$LINUX"], [
                KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
index 99c802f5b5a92592a7aaa8441c94b94fc696651e..f22e3f45160ac1f12a4a51709f28918fba0a62db 100755 (executable)
@@ -15807,7 +15807,7 @@ int
 main (void)
 {
 
-               enum req_op op __attribute__ ((unused)) = REQ_OP_DISCARD;
+               int op __attribute__ ((unused)) = REQ_OP_DISCARD;
 
   ;
   return 0;
@@ -15872,7 +15872,7 @@ int
 main (void)
 {
 
-               enum req_op op __attribute__ ((unused)) = REQ_OP_SECURE_ERASE;
+               int op __attribute__ ((unused)) = REQ_OP_SECURE_ERASE;
 
   ;
   return 0;
@@ -15906,7 +15906,7 @@ _ACEOF
                { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 
-$as_echo "#define HAVE_REQ_OP_SECURE_DISCARD 1" >>confdefs.h
+$as_echo "#define HAVE_REQ_OP_SECURE_ERASE 1" >>confdefs.h
 
 
 else
@@ -15937,7 +15937,7 @@ int
 main (void)
 {
 
-               enum req_op op __attribute__ ((unused)) = REQ_OP_FLUSH;
+               int op __attribute__ ((unused)) = REQ_OP_FLUSH;
 
   ;
   return 0;
@@ -16840,6 +16840,140 @@ $as_echo "#define HAVE_GET_GENDISK 1" >>confdefs.h
 
 
 
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bio_set_op_attrs is available" >&5
+$as_echo_n "checking whether bio_set_op_attrs is available... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+
+
+               #include <linux/blk_types.h>
+
+int
+main (void)
+{
+
+               struct bio *bio __attribute__ ((unused)) = NULL;
+
+               bio_set_op_attrs(bio, 0, 0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+
+cat - <<_ACEOF >conftest.h
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_BIO_SET_OP_ATTRS 1" >>confdefs.h
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+       rm -Rf build
+
+
+
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether generic_readlink is global" >&5
+$as_echo_n "checking whether generic_readlink is global... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+
+
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               int i __attribute__ ((unused));
+
+               i = generic_readlink(NULL, NULL, 0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+
+cat - <<_ACEOF >conftest.h
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_GENERIC_READLINK 1" >>confdefs.h
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+       rm -Rf build
+
+
+
+
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ql->discard_granularity is available" >&5
 $as_echo_n "checking whether ql->discard_granularity is available... " >&6; }
 
@@ -23851,6 +23985,71 @@ $as_echo "no" >&6; }
 
 
 
+fi
+       rm -Rf build
+
+
+
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->aio_fsync() exists" >&5
+$as_echo_n "checking whether fops->aio_fsync() exists... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+
+
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               unsigned int flags __attribute__ ((unused)) = READ_SYNC;
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+
+cat - <<_ACEOF >conftest.h
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define USE_REQ_FLAGS 1" >>confdefs.h
+
+
+
+
 fi
        rm -Rf build
 
@@ -26127,7 +26326,7 @@ int
 main (void)
 {
 
-               enum req_op op __attribute__ ((unused)) = REQ_OP_DISCARD;
+               int op __attribute__ ((unused)) = REQ_OP_DISCARD;
 
   ;
   return 0;
@@ -26192,7 +26391,7 @@ int
 main (void)
 {
 
-               enum req_op op __attribute__ ((unused)) = REQ_OP_SECURE_ERASE;
+               int op __attribute__ ((unused)) = REQ_OP_SECURE_ERASE;
 
   ;
   return 0;
@@ -26226,7 +26425,7 @@ _ACEOF
                { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 
-$as_echo "#define HAVE_REQ_OP_SECURE_DISCARD 1" >>confdefs.h
+$as_echo "#define HAVE_REQ_OP_SECURE_ERASE 1" >>confdefs.h
 
 
 else
@@ -26257,7 +26456,7 @@ int
 main (void)
 {
 
-               enum req_op op __attribute__ ((unused)) = REQ_OP_FLUSH;
+               int op __attribute__ ((unused)) = REQ_OP_FLUSH;
 
   ;
   return 0;
@@ -27160,6 +27359,140 @@ $as_echo "#define HAVE_GET_GENDISK 1" >>confdefs.h
 
 
 
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bio_set_op_attrs is available" >&5
+$as_echo_n "checking whether bio_set_op_attrs is available... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+
+
+               #include <linux/blk_types.h>
+
+int
+main (void)
+{
+
+               struct bio *bio __attribute__ ((unused)) = NULL;
+
+               bio_set_op_attrs(bio, 0, 0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+
+cat - <<_ACEOF >conftest.h
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_BIO_SET_OP_ATTRS 1" >>confdefs.h
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+       rm -Rf build
+
+
+
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether generic_readlink is global" >&5
+$as_echo_n "checking whether generic_readlink is global... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+
+
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               int i __attribute__ ((unused));
+
+               i = generic_readlink(NULL, NULL, 0);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+
+cat - <<_ACEOF >conftest.h
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_GENERIC_READLINK 1" >>confdefs.h
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+       rm -Rf build
+
+
+
+
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ql->discard_granularity is available" >&5
 $as_echo_n "checking whether ql->discard_granularity is available... " >&6; }
 
@@ -34171,6 +34504,71 @@ $as_echo "no" >&6; }
 
 
 
+fi
+       rm -Rf build
+
+
+
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->aio_fsync() exists" >&5
+$as_echo_n "checking whether fops->aio_fsync() exists... " >&6; }
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+
+
+               #include <linux/fs.h>
+
+int
+main (void)
+{
+
+               unsigned int flags __attribute__ ((unused)) = READ_SYNC;
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+
+cat - <<_ACEOF >conftest.h
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build && touch build/conftest.mod.c
+       echo "obj-m := conftest.o" >build/Makefile
+       modpost_flag=''
+       test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
+       if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define USE_REQ_FLAGS 1" >>confdefs.h
+
+
+
+
 fi
        rm -Rf build
 
index bbbdaa5de379dc0d1db6b946c21f1d239bf15356..7cbcdfed8d570c140a61be23438ecfd0ba9629d5 100644 (file)
@@ -133,6 +133,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-follow-down-one.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-generic_io_acct.m4 \
+       $(top_srcdir)/config/kernel-generic_readlink.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
        $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-get-link.m4 \
@@ -150,6 +151,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-put-link.m4 \
        $(top_srcdir)/config/kernel-rename.m4 \
+       $(top_srcdir)/config/kernel-req-flags.m4 \
        $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-set-nlink.m4 \
        $(top_srcdir)/config/kernel-setattr-prepare.m4 \
index c3d2d239653ae202a0a3e190f352f79c126b2245..8d9df6c88639bbc26d441e7c1c54701c847e6c4a 100644 (file)
@@ -134,6 +134,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-follow-down-one.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-generic_io_acct.m4 \
+       $(top_srcdir)/config/kernel-generic_readlink.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
        $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-get-link.m4 \
@@ -151,6 +152,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-put-link.m4 \
        $(top_srcdir)/config/kernel-rename.m4 \
+       $(top_srcdir)/config/kernel-req-flags.m4 \
        $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-set-nlink.m4 \
        $(top_srcdir)/config/kernel-setattr-prepare.m4 \
index 7cf8b741b31c01c9a03b9d0bb14b32e08b80a70f..6b1b40ec87a1930d9cfd39f7b3e628c848cbbc9d 100644 (file)
@@ -134,6 +134,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-follow-down-one.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-generic_io_acct.m4 \
+       $(top_srcdir)/config/kernel-generic_readlink.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
        $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-get-link.m4 \
@@ -151,6 +152,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-put-link.m4 \
        $(top_srcdir)/config/kernel-rename.m4 \
+       $(top_srcdir)/config/kernel-req-flags.m4 \
        $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-set-nlink.m4 \
        $(top_srcdir)/config/kernel-setattr-prepare.m4 \
index d3d5e6dfaaab396344140dde05ddedd8f70e4704..b11f6271face8db7b8a5071c9177063cf436e986 100644 (file)
@@ -133,6 +133,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-follow-down-one.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-generic_io_acct.m4 \
+       $(top_srcdir)/config/kernel-generic_readlink.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
        $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-get-link.m4 \
@@ -150,6 +151,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-put-link.m4 \
        $(top_srcdir)/config/kernel-rename.m4 \
+       $(top_srcdir)/config/kernel-req-flags.m4 \
        $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-set-nlink.m4 \
        $(top_srcdir)/config/kernel-setattr-prepare.m4 \
index 55c745d2b0171b11dab090f05b245e7f832eb047..67fb5166005ac72837003c0d63753031b4b3e9cb 100644 (file)
@@ -134,6 +134,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-follow-down-one.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-generic_io_acct.m4 \
+       $(top_srcdir)/config/kernel-generic_readlink.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
        $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-get-link.m4 \
@@ -151,6 +152,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-put-link.m4 \
        $(top_srcdir)/config/kernel-rename.m4 \
+       $(top_srcdir)/config/kernel-req-flags.m4 \
        $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-set-nlink.m4 \
        $(top_srcdir)/config/kernel-setattr-prepare.m4 \
index 08b334bc64be532958cb6523eb87140a8d19e7d8..eac9e49106db5d6a4cdff208a55ecf6f8d414fe6 100644 (file)
@@ -134,6 +134,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-follow-down-one.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-generic_io_acct.m4 \
+       $(top_srcdir)/config/kernel-generic_readlink.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
        $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-get-link.m4 \
@@ -151,6 +152,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-put-link.m4 \
        $(top_srcdir)/config/kernel-rename.m4 \
+       $(top_srcdir)/config/kernel-req-flags.m4 \
        $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-set-nlink.m4 \
        $(top_srcdir)/config/kernel-setattr-prepare.m4 \
index 2d6ed4e5b2492a93b5a0d458c17c10d356680df4..f7e648430ae3fbbf2199f4ffd54a6de751893aca 100644 (file)
@@ -134,6 +134,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-follow-down-one.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-generic_io_acct.m4 \
+       $(top_srcdir)/config/kernel-generic_readlink.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
        $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-get-link.m4 \
@@ -151,6 +152,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-put-link.m4 \
        $(top_srcdir)/config/kernel-rename.m4 \
+       $(top_srcdir)/config/kernel-req-flags.m4 \
        $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-set-nlink.m4 \
        $(top_srcdir)/config/kernel-setattr-prepare.m4 \
index c0b945bcd0617b9f383c53ca2d736b3455218414..5e4bf6d8e1c33532e3a1e7da727370b68031284e 100644 (file)
@@ -300,19 +300,58 @@ bio_set_flags_failfast(struct block_device *bdev, int *flags)
 #endif /* HAVE_BDEV_LOGICAL_BLOCK_SIZE */
 #endif /* HAVE_BDEV_PHYSICAL_BLOCK_SIZE */
 
+#ifndef HAVE_BIO_SET_OP_ATTRS
 /*
- * 2.6.37 API change
- * The WRITE_FLUSH, WRITE_FUA, and WRITE_FLUSH_FUA flags have been
- * introduced as a replacement for WRITE_BARRIER.  This was done to
- * allow richer semantics to be expressed to the block layer.  It is
- * the block layers responsibility to choose the correct way to
- * implement these semantics.
+ * Kernels without bio_set_op_attrs use bi_rw for the bio flags.
  */
-#ifdef WRITE_FLUSH_FUA
-#define        VDEV_WRITE_FLUSH_FUA            WRITE_FLUSH_FUA
+static inline void
+bio_set_op_attrs(struct bio *bio, unsigned rw, unsigned flags)
+{
+       bio->bi_rw |= rw | flags;
+}
+#endif
+
+/*
+ * bio_set_flush - Set the appropriate flags in a bio to guarantee
+ * data are on non-volatile media on completion.
+ *
+ * 2.6.X - 2.6.36 API,
+ *   WRITE_BARRIER - Tells the block layer to commit all previously submitted
+ *   writes to stable storage before this one is started and that the current
+ *   write is on stable storage upon completion.  Also prevents reordering
+ *   on both sides of the current operation.
+ *
+ * 2.6.37 - 4.8 API,
+ *   Introduce  WRITE_FLUSH, WRITE_FUA, and WRITE_FLUSH_FUA flags as a
+ *   replacement for WRITE_BARRIER to allow expressing richer semantics
+ *   to the block layer.  It's up to the block layer to implement the
+ *   semantics correctly. Use the WRITE_FLUSH_FUA flag combination.
+ *
+ * 4.8 - 4.9 API,
+ *   REQ_FLUSH was renamed to REQ_PREFLUSH.  For consistency with previous
+ *   ZoL releases, prefer the WRITE_FLUSH_FUA flag set if it's available.
+ *
+ * 4.10 API,
+ *   The read/write flags and their modifiers, including WRITE_FLUSH,
+ *   WRITE_FUA and WRITE_FLUSH_FUA were removed from fs.h in
+ *   torvalds/linux@70fd7614 and replaced by direct flag modification
+ *   of the REQ_ flags in bio->bi_opf.  Use REQ_PREFLUSH.
+ */
+static inline void
+bio_set_flush(struct bio *bio)
+{
+#if defined(WRITE_BARRIER)     /* < 2.6.37 */
+       bio_set_op_attrs(bio, 0, WRITE_BARRIER);
+#elif defined(WRITE_FLUSH_FUA) /* >= 2.6.37 and <= 4.9 */
+       bio_set_op_attrs(bio, 0, WRITE_FLUSH_FUA);
+#elif defined(REQ_PREFLUSH)    /* >= 4.10 */
+       bio_set_op_attrs(bio, 0, REQ_PREFLUSH);
 #else
-#define        VDEV_WRITE_FLUSH_FUA            WRITE_BARRIER
+#error "Allowing the build will cause bio_set_flush requests to be ignored."
+       "Please file an issue report at: "
+       "https://github.com/zfsonlinux/zfs/issues/new"
 #endif
+}
 
 /*
  * 4.8 - 4.x API,
index ad40e7911995d47c27841b0ec95b476137dabf1a..4434d159bb4e643d69a4af7a5468ab851d2f2c2f 100644 (file)
@@ -134,6 +134,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-follow-down-one.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-generic_io_acct.m4 \
+       $(top_srcdir)/config/kernel-generic_readlink.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
        $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-get-link.m4 \
@@ -151,6 +152,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-put-link.m4 \
        $(top_srcdir)/config/kernel-rename.m4 \
+       $(top_srcdir)/config/kernel-req-flags.m4 \
        $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-set-nlink.m4 \
        $(top_srcdir)/config/kernel-setattr-prepare.m4 \
index 5515ba857fd1141bbda14746e31eba1fa0de10e5..006b2eba75efce5b8420ca753fb683f93d8ab5ba 100644 (file)
@@ -134,6 +134,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-follow-down-one.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-generic_io_acct.m4 \
+       $(top_srcdir)/config/kernel-generic_readlink.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
        $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-get-link.m4 \
@@ -151,6 +152,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-put-link.m4 \
        $(top_srcdir)/config/kernel-rename.m4 \
+       $(top_srcdir)/config/kernel-req-flags.m4 \
        $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-set-nlink.m4 \
        $(top_srcdir)/config/kernel-setattr-prepare.m4 \
index abb7368fc70b8753a1f7c6dfffefbaf0b5f681b4..f20f5f25a70aa86e1f2f71e263036e10bd6dac65 100644 (file)
@@ -134,6 +134,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-follow-down-one.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-generic_io_acct.m4 \
+       $(top_srcdir)/config/kernel-generic_readlink.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
        $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-get-link.m4 \
@@ -151,6 +152,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-put-link.m4 \
        $(top_srcdir)/config/kernel-rename.m4 \
+       $(top_srcdir)/config/kernel-req-flags.m4 \
        $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-set-nlink.m4 \
        $(top_srcdir)/config/kernel-setattr-prepare.m4 \
index c6b46ad24c11e566bc03f5816f73a3bccf5f0fd4..154ba6806133d5e8a1b7b32a2c3235ceb3e9d8f5 100644 (file)
@@ -134,6 +134,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-follow-down-one.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-generic_io_acct.m4 \
+       $(top_srcdir)/config/kernel-generic_readlink.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
        $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-get-link.m4 \
@@ -151,6 +152,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-put-link.m4 \
        $(top_srcdir)/config/kernel-rename.m4 \
+       $(top_srcdir)/config/kernel-req-flags.m4 \
        $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-set-nlink.m4 \
        $(top_srcdir)/config/kernel-setattr-prepare.m4 \
index 2f06e721bed961c7e9cf029d1dda42abf5fd4b75..0c20b2eddbc64b7be30acbaa715b116634716552 100644 (file)
@@ -494,11 +494,6 @@ bio_map(struct bio *bio, void *bio_ptr, unsigned int bio_size)
        return (bio_size);
 }
 
-#ifndef bio_set_op_attrs
-#define        bio_set_op_attrs(bio, rw, flags) \
-       do { (bio)->bi_rw |= (rw)|(flags); } while (0)
-#endif
-
 static inline void
 vdev_submit_bio_impl(struct bio *bio)
 {
@@ -676,7 +671,7 @@ vdev_disk_io_flush(struct block_device *bdev, zio_t *zio)
        bio->bi_private = zio;
        bio->bi_bdev = bdev;
        zio->io_delay = jiffies_64;
-       bio_set_op_attrs(bio, 0, VDEV_WRITE_FLUSH_FUA);
+       bio_set_flush(bio);
        vdev_submit_bio(bio);
        invalidate_bdev(bdev);
 
@@ -729,18 +724,24 @@ vdev_disk_io_start(zio_t *zio)
                return;
        case ZIO_TYPE_WRITE:
                rw = WRITE;
-               if ((pri == ZIO_PRIORITY_SYNC_WRITE) && (v->vdev_nonrot))
+               if ((pri == ZIO_PRIORITY_SYNC_WRITE) && (v->vdev_nonrot)) {
+#ifdef USE_REQ_FLAGS
+                       flags = REQ_SYNC;
+#else
                        flags = WRITE_SYNC;
-               else
+#endif
+               } else {
                        flags = 0;
+               }
                break;
 
        case ZIO_TYPE_READ:
                rw = READ;
+               flags = 0;
+#ifndef USE_REQ_FLAGS
                if ((pri == ZIO_PRIORITY_SYNC_READ) && (v->vdev_nonrot))
                        flags = READ_SYNC;
-               else
-                       flags = 0;
+#endif
                break;
 
        default:
index 260ceeedbbb508881d90539aa6692917ebe37e97..a0e745f95ce6f83be42a86cd1f8cf07c99e31abd 100644 (file)
@@ -726,7 +726,9 @@ const struct inode_operations zpl_dir_inode_operations = {
 };
 
 const struct inode_operations zpl_symlink_inode_operations = {
+#ifdef HAVE_GENERIC_READLINK
        .readlink       = generic_readlink,
+#endif
 #if defined(HAVE_GET_LINK_DELAYED) || defined(HAVE_GET_LINK_COOKIE)
        .get_link       = zpl_get_link,
 #elif defined(HAVE_FOLLOW_LINK_COOKIE) || defined(HAVE_FOLLOW_LINK_NAMEIDATA)
index 49c729a9835b148ce9f94d5fd0a2bd0e5f68f08d..272fa5b6db249eb2c2da42e5048f1675816995d3 100644 (file)
@@ -57,6 +57,9 @@
 /* BIO_RW_FAILFAST_* are defined */
 #undef HAVE_BIO_RW_FAILFAST_DTD
 
+/* bio_set_op_attrs is available */
+#undef HAVE_BIO_SET_OP_ATTRS
+
 /* blkdev_get_by_path() is available */
 #undef HAVE_BLKDEV_GET_BY_PATH
 
 /* generic_start_io_acct()/generic_end_io_acct() avaliable */
 #undef HAVE_GENERIC_IO_ACCT
 
+/* generic_readlink is global */
+#undef HAVE_GENERIC_READLINK
+
 /* generic_setxattr() exists */
 #undef HAVE_GENERIC_SETXATTR
 
 #undef HAVE_REQ_OP_FLUSH
 
 /* REQ_OP_SECURE_ERASE is defined */
-#undef HAVE_REQ_OP_SECURE_DISCARD
+#undef HAVE_REQ_OP_SECURE_ERASE
 
 /* setattr_prepare() is available */
 #undef HAVE_SETATTR_PREPARE
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
+/* use REQ_* flags directly */
+#undef USE_REQ_FLAGS
+
 /* Version number of package */
 #undef VERSION