]> git.proxmox.com Git - mirror_zfs-debian.git/commitdiff
Move partition scanning from userspace to module.
authorEtienne Dechamps <etienne.dechamps@ovh.net>
Wed, 11 Jul 2012 13:06:32 +0000 (15:06 +0200)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 17 Jul 2012 16:17:31 +0000 (09:17 -0700)
Currently, zpool online -e (dynamic vdev expansion) doesn't work on
whole disks because we're invoking ioctl(BLKRRPART) from userspace
while ZFS still has a partition open on the disk, which results in
EBUSY.

This patch moves the BLKRRPART invocation from the zpool utility to the
module. Specifically, this is done just before opening the device in
vdev_disk_open() which is called inside vdev_reopen(). This requires
jumping through some hoops to get to the disk device from the partition
device, and to make sure we can still open the partition after the
BLKRRPART call.

Note that this new code path is triggered on dynamic vdev expansion
only; other actions, like creating a new pool, are unchanged and still
call BLKRRPART from userspace.

This change also depends on API changes which are available in 2.6.37
and latter kernels.  The build system has been updated to detect this,
but there is no compatibility mode for older kernels.  This means that
online expansion will NOT be available in older kernels.  However, it
will still be possible to expand the vdev offline.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #808

64 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-blkdev-get.m4 [new file with mode: 0644]
config/kernel-get-gendisk.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/efi_partition.h
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/libefi/rdwr_efi.c
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/libzfs/libzfs_pool.c
lib/libzpool/Makefile.in
man/Makefile.in
man/man5/Makefile.in
man/man8/Makefile.in
module/zfs/vdev_disk.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 a74420808cccd2898406487554b03ed3f86fe566..6679a13cae80eb5af5dfa34ffcfedcc157c19a27 100644 (file)
@@ -85,6 +85,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -94,6 +95,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 979c8bdd18ededf7b537633c7b55f11bb6cd02ce..7575384dd80e844eed93f3ed7c71064b8b798195 100644 (file)
@@ -62,6 +62,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -71,6 +72,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 5ffc07c584087d0a55043019b649ef44849f93f4..96a815ada9417d1ebb9059dcf5cc1396b37a3fee 100644 (file)
@@ -65,6 +65,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -74,6 +75,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index cf3dd57645c3c79b954e2d11ef5cb048b5ad58c1..7dee2e154a798b0a1fa7ae9739b4106dce85e81c 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 361b0252d26dfcd76c23add76c431aee2532a3c0..88ca38a47da4e0228d42117f8fa6a87b475a1425 100644 (file)
@@ -65,6 +65,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -74,6 +75,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 55f8f9898305c48cb062833ea9bba92f87c35131..d4a1b41f461e4d61caf638187cc42461f45aa646 100644 (file)
@@ -65,6 +65,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -74,6 +75,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index a1a8862c89a191edcb2603313285140db2ea421c..477a1c8b307dcd252766c2dcd32cf8dc679fafd5 100644 (file)
@@ -65,6 +65,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -74,6 +75,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 951788868fb81ad9e2ce773982bc163868be6e14..0b10c1c911b085e5573bc0a49f7236ff07d122fa 100644 (file)
@@ -65,6 +65,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -74,6 +75,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index cd0857cb2841380c626d2b8b8d8f4f712ae9bdc5..3b8bf849c84039b5a1ab64301edeaa00f4229d15 100644 (file)
@@ -65,6 +65,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -74,6 +75,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index b41de0a4e53a0fb8b43c760874fb881efd39a077..fc4cf451afac40f2c011717fafa8d767a406b25e 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index ce2315ff54ebaa2eb9d44a621bce9586e370ea8a..ae536ed9f6caf54fbe6f1919d05c7fb216f37cbb 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index d606d5490d85beb7bbd7f19d61b0cdf02221a343..1687a2e56ed17516a7aafe15f401b98e167a0175 100644 (file)
@@ -65,6 +65,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -74,6 +75,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 57064c3105d5ad9864946a54fc429eccb2310437..10ec6da5511ef9ea0df3902c82e58beb9ad4e3c6 100644 (file)
@@ -65,6 +65,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -74,6 +75,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
diff --git a/config/kernel-blkdev-get.m4 b/config/kernel-blkdev-get.m4
new file mode 100644 (file)
index 0000000..e31d717
--- /dev/null
@@ -0,0 +1,19 @@
+dnl #
+dnl # 2.6.37 API change
+dnl # Added 3rd argument for the active holder, previously this was
+dnl # hardcoded to NULL.
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_3ARG_BLKDEV_GET], [
+       AC_MSG_CHECKING([whether blkdev_get() wants 3 args])
+       ZFS_LINUX_TRY_COMPILE([
+               #include <linux/fs.h>
+       ],[
+               struct block_device *bdev = NULL;
+               (void) blkdev_get(bdev, 0, NULL);
+       ],[
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_3ARG_BLKDEV_GET, 1, [blkdev_get() wants 3 args])
+       ],[
+               AC_MSG_RESULT(no)
+       ])
+])
diff --git a/config/kernel-get-gendisk.m4 b/config/kernel-get-gendisk.m4
new file mode 100644 (file)
index 0000000..8cd725f
--- /dev/null
@@ -0,0 +1,11 @@
+dnl #
+dnl # 2.6.34 API change
+dnl # Verify the get_gendisk() symbol is exported.
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_GET_GENDISK], [
+       ZFS_CHECK_SYMBOL_EXPORT(
+               [get_gendisk],
+               [block/genhd.c],
+               [AC_DEFINE(HAVE_GET_GENDISK, 1, [get_gendisk() is available])],
+               [])
+])
index 7f07c90638c4f4532c0754dcc4c4c68835d0bef5..7d7f16730e33c140c59dfc31ef2b9cbbd28de41b 100644 (file)
@@ -8,6 +8,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS
        ZFS_AC_KERNEL_TYPE_FMODE_T
        ZFS_AC_KERNEL_KOBJ_NAME_LEN
+       ZFS_AC_KERNEL_3ARG_BLKDEV_GET
        ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH
        ZFS_AC_KERNEL_OPEN_BDEV_EXCLUSIVE
        ZFS_AC_KERNEL_INVALIDATE_BDEV_ARGS
@@ -34,6 +35,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_KERNEL_BLK_RQ_POS
        ZFS_AC_KERNEL_BLK_RQ_SECTORS
        ZFS_AC_KERNEL_GET_DISK_RO
+       ZFS_AC_KERNEL_GET_GENDISK
        ZFS_AC_KERNEL_RQ_IS_SYNC
        ZFS_AC_KERNEL_RQ_FOR_EACH_SEGMENT
        ZFS_AC_KERNEL_CONST_XATTR_HANDLER
index a82acd6e6f4fd0fa4cba62f117f0f6ca279855a8..60b844d831dcd930b3572d4f48a540c43c72c131 100755 (executable)
--- a/configure
+++ b/configure
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether blkdev_get() wants 3 args" >&5
+$as_echo_n "checking whether blkdev_get() wants 3 args... " >&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/fs.h>
+
+int
+main (void)
+{
+
+               struct block_device *bdev = NULL;
+               (void) blkdev_get(bdev, 0, NULL);
+
+  ;
+  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_3ARG_BLKDEV_GET 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 blkdev_get_by_path is exported" >&5
 $as_echo_n "checking whether symbol blkdev_get_by_path is exported... " >&6; }
        grep -q -E '[[:space:]]blkdev_get_by_path[[:space:]]' \
        EXTRA_KCFLAGS="$tmp_flags"
 
 
+       { $as_echo "$as_me:$LINENO: checking whether symbol get_gendisk is exported" >&5
+$as_echo_n "checking whether symbol get_gendisk is exported... " >&6; }
+       grep -q -E '[[:space:]]get_gendisk[[:space:]]' \
+               $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+
+               export=0
+               for file in block/genhd.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(get_gendisk)" "$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_GET_GENDISK 1
+_ACEOF
+
+
+fi
+
+
+else
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GET_GENDISK 1
+_ACEOF
+
+
+fi
+
+
+
+
        { $as_echo "$as_me:$LINENO: checking whether rq_is_sync() is available" >&5
 $as_echo_n "checking whether rq_is_sync() is available... " >&6; }
        tmp_flags="$EXTRA_KCFLAGS"
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether blkdev_get() wants 3 args" >&5
+$as_echo_n "checking whether blkdev_get() wants 3 args... " >&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/fs.h>
+
+int
+main (void)
+{
+
+               struct block_device *bdev = NULL;
+               (void) blkdev_get(bdev, 0, NULL);
+
+  ;
+  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_3ARG_BLKDEV_GET 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 blkdev_get_by_path is exported" >&5
 $as_echo_n "checking whether symbol blkdev_get_by_path is exported... " >&6; }
        grep -q -E '[[:space:]]blkdev_get_by_path[[:space:]]' \
        EXTRA_KCFLAGS="$tmp_flags"
 
 
+       { $as_echo "$as_me:$LINENO: checking whether symbol get_gendisk is exported" >&5
+$as_echo_n "checking whether symbol get_gendisk is exported... " >&6; }
+       grep -q -E '[[:space:]]get_gendisk[[:space:]]' \
+               $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null
+       rc=$?
+       if test $rc -ne 0; then
+
+               export=0
+               for file in block/genhd.c; do
+                       grep -q -E "EXPORT_SYMBOL.*(get_gendisk)" "$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_GET_GENDISK 1
+_ACEOF
+
+
+fi
+
+
+else
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GET_GENDISK 1
+_ACEOF
+
+
+fi
+
+
+
+
        { $as_echo "$as_me:$LINENO: checking whether rq_is_sync() is available" >&5
 $as_echo_n "checking whether rq_is_sync() is available... " >&6; }
        tmp_flags="$EXTRA_KCFLAGS"
index 09807b6d54be9407aa23d6c91d62dbb003dfe0f2..8ab747c23982c30facf19eb3768d91e6182d9e5f 100644 (file)
@@ -63,6 +63,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -72,6 +73,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 4d7868e4dec3c3a28103af242cedff97cf658d1a..e9376e1a6834bdd307f2beada8dd33fc1c14153b 100644 (file)
@@ -62,6 +62,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -71,6 +72,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 12a77119b2253ebbbca35f6ce20ce612546bc911..53fe58517efabd2b674b0458524f4fab07c82188 100644 (file)
@@ -62,6 +62,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -71,6 +72,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index b2be7aca7deb85883ed7fa1735dcf3b5735dbd45..2249324298e0b216856765aae87c6b45a9545432 100644 (file)
@@ -63,6 +63,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -72,6 +73,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 1edb4f27e414d1915b024e0cf4aed1899d12bf11..5f36b7827b8cf82ea8598ac4a8f081dfaaf10c1e 100644 (file)
@@ -63,6 +63,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -72,6 +73,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index df81588cd6caefbe7591c08b79c6a4041518dd99..026a6ad3c5e5db21afd7758d6126fef5b38b77d5 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 52e3e2c611846bd50477f646979014e971e03794..80cd72e37b66ec091db97324cac3219662e14aaf 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index b949360cd82642b693dde1af65d7f8a42be45dcd..6e2229c55ccc9d214b84b9497e4754a495e78155 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index e75e45a6bc0d2f6484485cba5429064091e0b1c5..ee367a574e46bf126c5d18957285e4eb1de74fe1 100644 (file)
@@ -229,6 +229,7 @@ struct partition64 {
 extern int     efi_alloc_and_init(int, uint32_t, struct dk_gpt **);
 extern int     efi_alloc_and_read(int, struct dk_gpt **);
 extern int     efi_write(int, struct dk_gpt *);
+extern int     efi_rescan(int);
 extern void    efi_free(struct dk_gpt *);
 extern int     efi_type(int);
 extern void    efi_err_check(struct dk_gpt *);
index 0ad4f3e35d35f70d84e0a14c934bfb55e429a7da..c5383e8b9db6437bf03b26a1f8fa49fcdcd044bf 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index acecb67d06d52b2903810386ee7f108567e15236..a121817daf4b992b75ec684dc9babc983db27b18 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 9f3ad2bc86e9855c3e775f1b4dec4ea455288351..8ef1491ebcec7d81b45906829c1579adf593bacd 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 2fa4c42d19609a9287308c69a6146fdebb0844d8..eb1177b24f49c077933a3c84ab1fef6063288e91 100644 (file)
@@ -62,6 +62,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -71,6 +72,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index ac732f651d181b77be8792c299f277a9d7170e07..5a6043d9f8cba05bab0bf87f1eb3e441db2a6d6f 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index e6ba6a15a050d0faa098c1a25b13c3d6fa005a7d..88fb19cd36a825f65791090ad97db83fe2581fe9 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 80886bb44f6de9d0ade7a56652912dfb4e341b7c..f4cf41712a69a456da23eb2b00659a7eeb6695dd 100644 (file)
@@ -497,10 +497,9 @@ efi_ioctl(int fd, int cmd, dk_efi_t *dk_ioc)
        return (error);
 }
 
-#if defined(__linux__)
-static int
-efi_rescan(int fd)
+int efi_rescan(int fd)
 {
+#if defined(__linux__)
        int retry = 5;
        int error;
 
@@ -512,10 +511,10 @@ efi_rescan(int fd)
                        return (-1);
                }
        }
+#endif
 
        return (0);
 }
-#endif
 
 static int
 check_label(int fd, dk_efi_t *dk_ioc)
@@ -1304,12 +1303,6 @@ efi_write(int fd, struct dk_gpt *vtoc)
        (void) write_pmbr(fd, vtoc);
        free(dk_ioc.dki_data);
 
-#if defined(__linux__)
-       rval = efi_rescan(fd);
-       if (rval)
-               return (VT_ERROR);
-#endif
-
        return (0);
 }
 
index df253283b995c4b1a41510fe12af4655a6aa8ef8..78a1ccd26fe9666e5d21cdab73c077668abe2139 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 1932417bbde231df6c891c9193caeb8955a8278a..8a3d50fb79d61b9a0307e3ea15cf989f4bd959ef 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 35696e1bff14bc96d535976c9662342470b8b39f..935f47642ca659663560c36ea16c33cd7cd0d999 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 14af6a6fdf07740376231f3d94b2623a0d7a19cb..d4cbca28e5a96522bfe9cfa027f3db63ec3a8baa 100644 (file)
@@ -63,6 +63,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -72,6 +73,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 31823b93e36aba1064681c65b433412e3ead33c3..53f774349a3496d2302a8af51a3e3569a2e18fc1 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 7c6ff5172af4d63a765c22b5867860a472257850..95754c37b43c867a7bb7165dc976d180a421bad1 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 73d2fe64df68ba768f46ed0530b196064372ff9d..668183fd305ea41c45d6f2d1f29243b40fb2d148 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 32e350e3a044d7a60b4a876d49dea995fbf48cc8..5aff82a93480227a563fe7c064fc94710e5949c0 100644 (file)
@@ -62,6 +62,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -71,6 +72,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 8bf72d4f5919ca01f649c8a8751e554584cc198b..2ee47ff693b85fb73fe84190379b21a020f623b4 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index c114a8527f73cc54e87c85a1ac3e6dd2a6b8df77..6f8e483873638801903347fb2508e201a56baef9 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 71fee1785d9d28a917b158dd657dc5f6650204e9..09d03e99c01df027b816b60d8a4b85cbf7bde972 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index e3eeee4ba97d38c581b60f846f500f2db035f7f0..30263687fa0ff9caf597501cbe98570729f3d416 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index d09a7edfda738aaeb36a8c3907fcd62805e08b7e..7106d85df71f987c21394d2ef4eca6e1f9b06400 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 6b0cafe763c3362096757a545a87de677da4436b..49f579a64c90dac72596c8bb668668fa4c1156e8 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 1af0fa9e52c0f5d382166383473f75199455d3e5..f13cdd080678bbccd78485e92f3d649ef383b663 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index c9185fe787b84adf5d75a4d2d371cc12e6a9f5d4..7ab2532b2251af7d353a65c0732f402020066fbd 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 11d0b38de553391db0941a7f2300f69a1a8089b6..c5b3ffd38c7a62315522db9239cd97447edc1c8c 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index fa9f36cc669a59f8a02f905684fdebf793a376a2..8339305717ebd676ecc6e1ceee1a12fa70e251dd 100644 (file)
@@ -2097,6 +2097,9 @@ zpool_relabel_disk(libzfs_handle_t *hdl, const char *path, const char *msg)
         * It's possible that we might encounter an error if the device
         * does not have any unallocated space left. If so, we simply
         * ignore that error and continue on.
+        *
+        * Also, we don't call efi_rescan() - that would just return EBUSY.
+        * The module will do it for us in vdev_disk_open().
         */
        error = efi_use_whole_disk(fd);
        (void) close(fd);
@@ -3847,7 +3850,7 @@ zpool_label_disk(libzfs_handle_t *hdl, zpool_handle_t *zhp, char *name)
        vtoc->efi_parts[8].p_size = resv;
        vtoc->efi_parts[8].p_tag = V_RESERVED;
 
-       if ((rval = efi_write(fd, vtoc)) != 0) {
+       if ((rval = efi_write(fd, vtoc)) != 0 || (rval = efi_rescan(fd)) != 0) {
                /*
                 * Some block drivers (like pcata) may not support EFI
                 * GPT labels.  Print out a helpful error message dir-
index 81813219810cd18604c1bf419aa627b2496b40b7..ad573d4a125897e93a46b13e1303f04b3a1b2937 100644 (file)
@@ -64,6 +64,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -73,6 +74,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index fc9ef751a48f27c834a43575ae68f0a7970d093d..83c2ec913bd7d743130c8e26f16957a36fa0f12c 100644 (file)
@@ -62,6 +62,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -71,6 +72,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 20fa620072aaa5b33444234ccaf8793e86ec11da..000f0af7de68aac0fbef959cce677004b1499e38 100644 (file)
@@ -62,6 +62,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -71,6 +72,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index b4dbc61077498c2238f49b8e2ac1a7b7075857a1..e0ca5c96d964e2e6cc6b6828affb6700d9319045 100644 (file)
@@ -62,6 +62,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -71,6 +72,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 28a4861abd7260c2c1feb7246fbcfe5d64fd71c4..eee03d08055d46291ac011b4118213b9c32446f9 100644 (file)
@@ -158,10 +158,75 @@ vdev_elevator_switch(vdev_t *v, char *elevator)
        return (error);
 }
 
+/*
+ * Expanding a whole disk vdev involves invoking BLKRRPART on the
+ * whole disk device. This poses a problem, because BLKRRPART will
+ * return EBUSY if one of the disk's partitions is open. That's why
+ * we have to do it here, just before opening the data partition.
+ * Unfortunately, BLKRRPART works by dropping all partitions and
+ * recreating them, which means that for a short time window, all
+ * /dev/sdxN device files disappear (until udev recreates them).
+ * This means two things:
+ *  - When we open the data partition just after a BLKRRPART, we
+ *    can't do it using the normal device file path because of the
+ *    obvious race condition with udev. Instead, we use reliable
+ *    kernel APIs to get a handle to the new partition device from
+ *    the whole disk device.
+ *  - Because vdev_disk_open() initially needs to find the device
+ *    using its path, multiple vdev_disk_open() invocations in
+ *    short succession on the same disk with BLKRRPARTs in the
+ *    middle have a high probability of failure (because of the
+ *    race condition with udev). A typical situation where this
+ *    might happen is when the zpool userspace tool does a
+ *    TRYIMPORT immediately followed by an IMPORT. For this
+ *    reason, we only invoke BLKRRPART in the module when strictly
+ *    necessary (zpool online -e case), and rely on userspace to
+ *    do it when possible.
+ */
+static struct block_device *
+vdev_disk_rrpart(const char *path, int mode, vdev_disk_t *vd)
+{
+#if defined(HAVE_3ARG_BLKDEV_GET) && defined(HAVE_GET_GENDISK)
+       struct block_device *bdev, *result = ERR_PTR(-ENXIO);
+       struct gendisk *disk;
+       int error, partno;
+
+       bdev = vdev_bdev_open(path, vdev_bdev_mode(mode), vd);
+       if (IS_ERR(bdev))
+               return bdev;
+
+       disk = get_gendisk(bdev->bd_dev, &partno);
+       vdev_bdev_close(bdev, vdev_bdev_mode(mode));
+
+       if (disk) {
+               bdev = bdget(disk_devt(disk));
+               if (bdev) {
+                       error = blkdev_get(bdev, vdev_bdev_mode(mode), vd);
+                       if (error == 0)
+                               error = ioctl_by_bdev(bdev, BLKRRPART, 0);
+                       vdev_bdev_close(bdev, vdev_bdev_mode(mode));
+               }
+
+               bdev = bdget_disk(disk, partno);
+               if (bdev) {
+                       error = blkdev_get(bdev,
+                           vdev_bdev_mode(mode) | FMODE_EXCL, vd);
+                       if (error == 0)
+                               result = bdev;
+               }
+               put_disk(disk);
+       }
+
+       return result;
+#else
+       return ERR_PTR(-EOPNOTSUPP);
+#endif /* defined(HAVE_3ARG_BLKDEV_GET) && defined(HAVE_GET_GENDISK) */
+}
+
 static int
 vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *ashift)
 {
-       struct block_device *bdev;
+       struct block_device *bdev = ERR_PTR(-ENXIO);
        vdev_disk_t *vd;
        int mode, block_size;
 
@@ -190,7 +255,10 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *ashift)
         * level vdev validation.
         */
        mode = spa_mode(v->vdev_spa);
-       bdev = vdev_bdev_open(v->vdev_path, vdev_bdev_mode(mode), vd);
+       if (v->vdev_wholedisk && v->vdev_expanding)
+               bdev = vdev_disk_rrpart(v->vdev_path, mode, vd);
+       if (IS_ERR(bdev))
+               bdev = vdev_bdev_open(v->vdev_path, vdev_bdev_mode(mode), vd);
        if (IS_ERR(bdev)) {
                kmem_free(vd, sizeof(vdev_disk_t));
                return -PTR_ERR(bdev);
index ff7c33ee2221e973bc586b1a01d5cbe4a569b080..053ab806f85bffc88ed141826b856f821fb0d323 100644 (file)
@@ -63,6 +63,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -72,6 +73,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 9f69032fea81e5ce26f80c5c28b35273e5fbfd96..fb54f2aec0d8ae0dae5a55ed929694f123077ed3 100644 (file)
@@ -63,6 +63,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -72,6 +73,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index a83ba7ef72a474ce26fa382f789b51861eeae3ca..8797779be0d3b102e8d21f4547dd015d37ecfbe9 100644 (file)
@@ -63,6 +63,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -72,6 +73,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index ccd79c8b37fda0483c3fea57e1acde304c578cc0..b4e1c9fd3db613bcaaa4a830e095b2ec4079c0bf 100644 (file)
@@ -63,6 +63,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -72,6 +73,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 373e17ff4e367e4471771f1237633e5172da1759..f6dc9321e59d127962b9548ba804aefb218608e5 100644 (file)
@@ -63,6 +63,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -72,6 +73,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 36e6a52114b63aa17689167462582a37d1d0f38e..cc2e150650de4aee6d51a34d0d3f4d878f6071de 100644 (file)
@@ -62,6 +62,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -71,6 +72,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index 5761ebca2e34a243ca564a3651f6aa832d712c7b..c566138faab4c2d8c6187f6b9c60f6e47df62f7e 100644 (file)
@@ -63,6 +63,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-blkdev-get.m4 \
        $(top_srcdir)/config/kernel-check-disk-size-change.m4 \
        $(top_srcdir)/config/kernel-create-umode-t.m4 \
        $(top_srcdir)/config/kernel-d-make-root.m4 \
@@ -72,6 +73,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-fmode-t.m4 \
        $(top_srcdir)/config/kernel-fsync.m4 \
        $(top_srcdir)/config/kernel-get-disk-ro.m4 \
+       $(top_srcdir)/config/kernel-get-gendisk.m4 \
        $(top_srcdir)/config/kernel-insert-inode-locked.m4 \
        $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \
        $(top_srcdir)/config/kernel-kobj-name-len.m4 \
index eacdfa762a33312f6d100bfa05bbf29da06e0ec9..0398fa287a9290f6613ad9908d9880a1be4001ed 100644 (file)
@@ -9,6 +9,9 @@
 /* bio_end_io_t wants 2 args */
 #undef HAVE_2ARGS_BIO_END_IO_T
 
+/* blkdev_get() wants 3 args */
+#undef HAVE_3ARG_BLKDEV_GET
+
 /* security_inode_init_security wants 6 args */
 #undef HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY
 
 /* blk_disk_ro() is available */
 #undef HAVE_GET_DISK_RO
 
+/* get_gendisk() is available */
+#undef HAVE_GET_GENDISK
+
 /* Define to 1 if licensed under the GPL */
 #undef HAVE_GPL_ONLY_SYMBOLS