Fix 'zfs set volsize=N pool/dataset'
This change fixes a kernel panic which would occur when resizing a dataset which was not open. The objset_t stored in the zvol_state_t will be set to NULL when the block device is closed. To avoid this issue we pass the correct objset_t as the third arg. The code has also been updated to correctly notify the kernel when the block device capacity changes. For 2.6.28 and newer kernels the capacity change will be immediately detected. For earlier kernels the capacity change will be detected when the device is next opened. This is a known limitation of older kernels. Online ext3 resize test case passes on 2.6.28+ kernels: $ dd if=/dev/zero of=/tmp/zvol bs=1M count=1 seek=1023 $ zpool create tank /tmp/zvol $ zfs create -V 500M tank/zd0 $ mkfs.ext3 /dev/zd0 $ mkdir /mnt/zd0 $ mount /dev/zd0 /mnt/zd0 $ df -h /mnt/zd0 $ zfs set volsize=800M tank/zd0 $ resize2fs /dev/zd0 $ df -h /mnt/zd0 Original-patch-by: Fajar A. Nugraha <github@fajar.net> Closes #68 Closes #84
This commit is contained in:
parent
e90a3de3e8
commit
df554c148e
|
@ -66,6 +66,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -54,6 +54,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -54,6 +54,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -54,6 +54,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -54,6 +54,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -54,6 +54,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -54,6 +54,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -54,6 +54,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -54,6 +54,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
dnl #
|
||||
dnl # 2.6.28 API change
|
||||
dnl # Added check_disk_size_change() helper function.
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_CHECK_DISK_SIZE_CHANGE], [
|
||||
ZFS_CHECK_SYMBOL_EXPORT(
|
||||
[check_disk_size_change],
|
||||
[fs/block_dev.c],
|
||||
[AC_DEFINE(HAVE_CHECK_DISK_SIZE_CHANGE, 1,
|
||||
[check_disk_size_change() is available])],
|
||||
[])
|
||||
])
|
|
@ -36,6 +36,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
|
|||
ZFS_AC_KERNEL_EVICT_INODE
|
||||
ZFS_AC_KERNEL_INSERT_INODE_LOCKED
|
||||
ZFS_AC_KERNEL_D_OBTAIN_ALIAS
|
||||
ZFS_AC_KERNEL_CHECK_DISK_SIZE_CHANGE
|
||||
|
||||
if test "$LINUX_OBJ" != "$LINUX"; then
|
||||
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
|
||||
|
|
|
@ -14398,6 +14398,46 @@ _ACEOF
|
|||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: checking whether symbol check_disk_size_change is exported" >&5
|
||||
$as_echo_n "checking whether symbol check_disk_size_change is exported... " >&6; }
|
||||
grep -q -E '[[:space:]]check_disk_size_change[[: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.*(check_disk_size_change)" "$LINUX/$file" 2>/dev/null
|
||||
rc=$?
|
||||
if test $rc -eq 0; then
|
||||
export=1
|
||||
break;
|
||||
fi
|
||||
done
|
||||
if test $export -eq 0; then
|
||||
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
|
||||
else
|
||||
{ $as_echo "$as_me:$LINENO: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_CHECK_DISK_SIZE_CHANGE 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
else
|
||||
{ $as_echo "$as_me:$LINENO: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_CHECK_DISK_SIZE_CHANGE 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if test "$LINUX_OBJ" != "$LINUX"; then
|
||||
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
|
||||
fi
|
||||
|
@ -18484,6 +18524,46 @@ _ACEOF
|
|||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: checking whether symbol check_disk_size_change is exported" >&5
|
||||
$as_echo_n "checking whether symbol check_disk_size_change is exported... " >&6; }
|
||||
grep -q -E '[[:space:]]check_disk_size_change[[: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.*(check_disk_size_change)" "$LINUX/$file" 2>/dev/null
|
||||
rc=$?
|
||||
if test $rc -eq 0; then
|
||||
export=1
|
||||
break;
|
||||
fi
|
||||
done
|
||||
if test $export -eq 0; then
|
||||
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
|
||||
else
|
||||
{ $as_echo "$as_me:$LINENO: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_CHECK_DISK_SIZE_CHANGE 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
else
|
||||
{ $as_echo "$as_me:$LINENO: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_CHECK_DISK_SIZE_CHANGE 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if test "$LINUX_OBJ" != "$LINUX"; then
|
||||
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
|
||||
fi
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -228,7 +228,7 @@ zvol_check_volsize(uint64_t volsize, uint64_t blocksize)
|
|||
* Ensure the zap is flushed then inform the VFS of the capacity change.
|
||||
*/
|
||||
static int
|
||||
zvol_update_volsize(zvol_state_t *zv, uint64_t volsize)
|
||||
zvol_update_volsize(zvol_state_t *zv, uint64_t volsize, objset_t *os)
|
||||
{
|
||||
struct block_device *bdev;
|
||||
dmu_tx_t *tx;
|
||||
|
@ -236,7 +236,7 @@ zvol_update_volsize(zvol_state_t *zv, uint64_t volsize)
|
|||
|
||||
ASSERT(MUTEX_HELD(&zvol_state_lock));
|
||||
|
||||
tx = dmu_tx_create(zv->zv_objset);
|
||||
tx = dmu_tx_create(os);
|
||||
dmu_tx_hold_zap(tx, ZVOL_ZAP_OBJ, TRUE, NULL);
|
||||
error = dmu_tx_assign(tx, TXG_WAIT);
|
||||
if (error) {
|
||||
|
@ -244,27 +244,35 @@ zvol_update_volsize(zvol_state_t *zv, uint64_t volsize)
|
|||
return (error);
|
||||
}
|
||||
|
||||
error = zap_update(zv->zv_objset, ZVOL_ZAP_OBJ, "size", 8, 1,
|
||||
error = zap_update(os, ZVOL_ZAP_OBJ, "size", 8, 1,
|
||||
&volsize, tx);
|
||||
dmu_tx_commit(tx);
|
||||
|
||||
if (error)
|
||||
return (error);
|
||||
|
||||
error = dmu_free_long_range(zv->zv_objset,
|
||||
error = dmu_free_long_range(os,
|
||||
ZVOL_OBJ, volsize, DMU_OBJECT_END);
|
||||
if (error)
|
||||
return (error);
|
||||
|
||||
zv->zv_volsize = volsize;
|
||||
zv->zv_changed = 1;
|
||||
|
||||
bdev = bdget_disk(zv->zv_disk, 0);
|
||||
if (!bdev)
|
||||
return EIO;
|
||||
return (EIO);
|
||||
/*
|
||||
* 2.6.28 API change
|
||||
* Added check_disk_size_change() helper function.
|
||||
*/
|
||||
#ifdef HAVE_CHECK_DISK_SIZE_CHANGE
|
||||
set_capacity(zv->zv_disk, volsize >> 9);
|
||||
zv->zv_volsize = volsize;
|
||||
check_disk_size_change(zv->zv_disk, bdev);
|
||||
#else
|
||||
zv->zv_volsize = volsize;
|
||||
zv->zv_changed = 1;
|
||||
(void) check_disk_change(bdev);
|
||||
#endif /* HAVE_CHECK_DISK_SIZE_CHANGE */
|
||||
|
||||
error = check_disk_change(bdev);
|
||||
ASSERT3U(error, !=, 0);
|
||||
bdput(bdev);
|
||||
|
||||
return (0);
|
||||
|
@ -311,7 +319,7 @@ zvol_set_volsize(const char *name, uint64_t volsize)
|
|||
goto out_doi;
|
||||
}
|
||||
|
||||
error = zvol_update_volsize(zv, volsize);
|
||||
error = zvol_update_volsize(zv, volsize, os);
|
||||
out_doi:
|
||||
kmem_free(doi, sizeof(dmu_object_info_t));
|
||||
out:
|
||||
|
|
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
|||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \
|
||||
$(top_srcdir)/config/kernel-check-disk-size-change.m4 \
|
||||
$(top_srcdir)/config/kernel-d-obtain-alias.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
|
|
|
@ -60,6 +60,9 @@
|
|||
/* blk_rq_sectors() is available */
|
||||
#undef HAVE_BLK_RQ_SECTORS
|
||||
|
||||
/* check_disk_size_change() is available */
|
||||
#undef HAVE_CHECK_DISK_SIZE_CHANGE
|
||||
|
||||
/* super_block uses const struct xattr_hander */
|
||||
#undef HAVE_CONST_XATTR_HANDLER
|
||||
|
||||
|
|
Loading…
Reference in New Issue