[PATCH][SRU][XENIAL] UBUNTU: SAUCE: (noup) Update zfs to 0.6.5.6-0ubuntu15
Colin King
colin.king at canonical.com
Fri Oct 28 12:55:00 UTC 2016
From: Colin Ian King <colin.king at canonical.com>
Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
zfs/META | 2 +-
zfs/config/kernel-lookup-bdev.m4 | 11 +
zfs/configure | 412 ++++++++++++++++++++++++++++++++++++++
zfs/contrib/initramfs/scripts/zfs | 7 +-
zfs/include/linux/blkdev_compat.h | 12 +-
zfs/module/zfs/zvol.c | 2 +-
zfs/zfs_config.h.in | 3 +
7 files changed, 441 insertions(+), 8 deletions(-)
diff --git a/zfs/META b/zfs/META
index a0dbc97..94784ee 100644
--- a/zfs/META
+++ b/zfs/META
@@ -2,7 +2,7 @@ Meta: 1
Name: zfs
Branch: 1.0
Version: 0.6.5.6
-Release: 0ubuntu10
+Release: 0ubuntu15
Release-Tags: relext
License: CDDL
Author: OpenZFS on Linux
diff --git a/zfs/config/kernel-lookup-bdev.m4 b/zfs/config/kernel-lookup-bdev.m4
index 245f95f..d8496e3 100644
--- a/zfs/config/kernel-lookup-bdev.m4
+++ b/zfs/config/kernel-lookup-bdev.m4
@@ -13,5 +13,16 @@ AC_DEFUN([ZFS_AC_KERNEL_LOOKUP_BDEV],
AC_DEFINE(HAVE_LOOKUP_BDEV, 1, [lookup_bdev() is available])
], [
AC_MSG_RESULT(no)
+ AC_MSG_CHECKING([whether lookup_bdev() is available and wants 2 args])
+ ZFS_LINUX_TRY_COMPILE_SYMBOL([
+ #include <linux/fs.h>
+ ], [
+ lookup_bdev(NULL, 0);
+ ], [lookup_bdev], [fs/block_dev.c], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_LOOKUP_BDEV_2ARGS, 1, [lookup_bdev() with 2 args is available])
+ ], [
+ AC_MSG_RESULT(no)
+ ])
])
])
diff --git a/zfs/configure b/zfs/configure
index b1e7c88..ebbae10 100755
--- a/zfs/configure
+++ b/zfs/configure
@@ -15071,6 +15071,109 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lookup_bdev() is available and wants 2 args" >&5
+$as_echo_n "checking whether lookup_bdev() is available and wants 2 args... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+
+
+ #include <linux/fs.h>
+
+int
+main (void)
+{
+
+ lookup_bdev(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 :
+ rc=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+ rm -Rf build
+
+
+ if test $rc -ne 0; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ else
+ if test "x$enable_linux_builtin" != xyes; then
+
+ grep -q -E '[[:space:]]lookup_bdev[[:space:]]' \
+ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
+ rc=$?
+ if test $rc -ne 0; then
+ export=0
+ for file in fs/block_dev.c; do
+ grep -q -E "EXPORT_SYMBOL.*(lookup_bdev)" \
+ "$LINUX/$file" 2>/dev/null
+ rc=$?
+ if test $rc -eq 0; then
+ export=1
+ break;
+ fi
+ done
+ if test $export -eq 0; then :
+ rc=1
+ else :
+ rc=0
+ fi
+ else :
+ rc=0
+ fi
+
+ fi
+ if test $rc -ne 0; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ else :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_LOOKUP_BDEV_2ARGS 1" >>confdefs.h
+
+
+ fi
+ fi
+
else
if test "x$enable_linux_builtin" != xyes; then
@@ -15103,6 +15206,109 @@ $as_echo "no" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lookup_bdev() is available and wants 2 args" >&5
+$as_echo_n "checking whether lookup_bdev() is available and wants 2 args... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+
+
+ #include <linux/fs.h>
+
+int
+main (void)
+{
+
+ lookup_bdev(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 :
+ rc=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+ rm -Rf build
+
+
+ if test $rc -ne 0; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ else
+ if test "x$enable_linux_builtin" != xyes; then
+
+ grep -q -E '[[:space:]]lookup_bdev[[:space:]]' \
+ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
+ rc=$?
+ if test $rc -ne 0; then
+ export=0
+ for file in fs/block_dev.c; do
+ grep -q -E "EXPORT_SYMBOL.*(lookup_bdev)" \
+ "$LINUX/$file" 2>/dev/null
+ rc=$?
+ if test $rc -eq 0; then
+ export=1
+ break;
+ fi
+ done
+ if test $export -eq 0; then :
+ rc=1
+ else :
+ rc=0
+ fi
+ else :
+ rc=0
+ fi
+
+ fi
+ if test $rc -ne 0; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ else :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_LOOKUP_BDEV_2ARGS 1" >>confdefs.h
+
+
+ fi
+ fi
+
else :
@@ -24122,6 +24328,109 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lookup_bdev() is available and wants 2 args" >&5
+$as_echo_n "checking whether lookup_bdev() is available and wants 2 args... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+
+
+ #include <linux/fs.h>
+
+int
+main (void)
+{
+
+ lookup_bdev(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 :
+ rc=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+ rm -Rf build
+
+
+ if test $rc -ne 0; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ else
+ if test "x$enable_linux_builtin" != xyes; then
+
+ grep -q -E '[[:space:]]lookup_bdev[[:space:]]' \
+ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
+ rc=$?
+ if test $rc -ne 0; then
+ export=0
+ for file in fs/block_dev.c; do
+ grep -q -E "EXPORT_SYMBOL.*(lookup_bdev)" \
+ "$LINUX/$file" 2>/dev/null
+ rc=$?
+ if test $rc -eq 0; then
+ export=1
+ break;
+ fi
+ done
+ if test $export -eq 0; then :
+ rc=1
+ else :
+ rc=0
+ fi
+ else :
+ rc=0
+ fi
+
+ fi
+ if test $rc -ne 0; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ else :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_LOOKUP_BDEV_2ARGS 1" >>confdefs.h
+
+
+ fi
+ fi
+
else
if test "x$enable_linux_builtin" != xyes; then
@@ -24154,6 +24463,109 @@ $as_echo "no" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lookup_bdev() is available and wants 2 args" >&5
+$as_echo_n "checking whether lookup_bdev() is available and wants 2 args... " >&6; }
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+
+
+ #include <linux/fs.h>
+
+int
+main (void)
+{
+
+ lookup_bdev(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 :
+ rc=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ rc=1
+
+
+fi
+ rm -Rf build
+
+
+ if test $rc -ne 0; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ else
+ if test "x$enable_linux_builtin" != xyes; then
+
+ grep -q -E '[[:space:]]lookup_bdev[[:space:]]' \
+ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
+ rc=$?
+ if test $rc -ne 0; then
+ export=0
+ for file in fs/block_dev.c; do
+ grep -q -E "EXPORT_SYMBOL.*(lookup_bdev)" \
+ "$LINUX/$file" 2>/dev/null
+ rc=$?
+ if test $rc -eq 0; then
+ export=1
+ break;
+ fi
+ done
+ if test $export -eq 0; then :
+ rc=1
+ else :
+ rc=0
+ fi
+ else :
+ rc=0
+ fi
+
+ fi
+ if test $rc -ne 0; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ else :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_LOOKUP_BDEV_2ARGS 1" >>confdefs.h
+
+
+ fi
+ fi
+
else :
diff --git a/zfs/contrib/initramfs/scripts/zfs b/zfs/contrib/initramfs/scripts/zfs
index 6a78a46..250dc57 100644
--- a/zfs/contrib/initramfs/scripts/zfs
+++ b/zfs/contrib/initramfs/scripts/zfs
@@ -288,9 +288,8 @@ load_module_initrd()
wait_for_dev
fi
- # zpool import refuse to import without a valid mtab
- [ ! -f /proc/mounts ] && mount proc /proc
- [ ! -f /etc/mtab ] && cat /proc/mounts > /etc/mtab
+ # zpool import refuse to import without a valid /proc/self/mounts
+ [ ! -f /proc/self/mounts ] && mount proc /proc
# Load the module
load_module "zfs" || return 1
@@ -919,7 +918,7 @@ mountroot()
#
# but the MOUNTPOINT prefix is preserved on descendent filesystem
# after the pivot into the regular root, which later breaks things
- # like `zfs mount -a` and the /etc/mtab refresh.
+ # like `zfs mount -a` and the /proc/self/mounts refresh.
#
# * Mount additional filesystems required
# Such as /usr, /var, /usr/local etc.
diff --git a/zfs/include/linux/blkdev_compat.h b/zfs/include/linux/blkdev_compat.h
index 868b89c5..4b6423a 100644
--- a/zfs/include/linux/blkdev_compat.h
+++ b/zfs/include/linux/blkdev_compat.h
@@ -236,9 +236,17 @@ bio_set_flags_failfast(struct block_device *bdev, int *flags)
* 2.6.27 API change
* The function was exported for use, prior to this it existed by the
* symbol was not exported.
+ *
+ * Ubuntu Xenial commit 193fb6a2c94fab8eb8ce70a5da4d21c7d4023bee
+ * ("UBUNTU: SAUCE: block_dev: Support checking inode permissions in lookup_bdev()")
+ * added in a mask parameter which we set as zero.
*/
-#ifndef HAVE_LOOKUP_BDEV
-#define lookup_bdev(path) ERR_PTR(-ENOTSUP)
+#ifdef HAVE_LOOKUP_BDEV
+#define zfs_lookup_bdev(path) lookup_bdev(path)
+#elif defined(HAVE_LOOKUP_BDEV_2ARGS)
+#define zfs_lookup_bdev(path) lookup_bdev(path, 0)
+#else
+#define zfs_lookup_bdev(path) ERR_PTR(-ENOTSUP)
#endif
/*
diff --git a/zfs/module/zfs/zvol.c b/zfs/module/zfs/zvol.c
index a7a79e6..816c123 100644
--- a/zfs/module/zfs/zvol.c
+++ b/zfs/module/zfs/zvol.c
@@ -174,7 +174,7 @@ zvol_is_zvol(const char *device)
struct block_device *bdev;
unsigned int major;
- bdev = lookup_bdev(device);
+ bdev = zfs_lookup_bdev(device);
if (IS_ERR(bdev))
return (B_FALSE);
diff --git a/zfs/zfs_config.h.in b/zfs/zfs_config.h.in
index a539e7c..86c5668 100644
--- a/zfs/zfs_config.h.in
+++ b/zfs/zfs_config.h.in
@@ -222,6 +222,9 @@
/* lookup_bdev() is available */
#undef HAVE_LOOKUP_BDEV
+/* lookup_bdev() with 2 args is available */
+#undef HAVE_LOOKUP_BDEV_2ARGS
+
/* iops->lookup() passes nameidata */
#undef HAVE_LOOKUP_NAMEIDATA
--
2.9.3
More information about the kernel-team
mailing list