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 a744208..6679a13 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-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 \
        $(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-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 \
        $(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 979c8bd..7575384 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-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 \
        $(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-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 \
        $(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 5ffc07c..96a815a 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-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 \
        $(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-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 \
        $(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 cf3dd57..7dee2e1 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-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 \
        $(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-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 \
        $(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 361b025..88ca38a 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-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 \
        $(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-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 \
        $(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 55f8f98..d4a1b41 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-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 \
        $(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-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 \
        $(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 a1a8862..477a1c8 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-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 \
        $(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-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 \
        $(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 9517888..0b10c1c 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-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 \
        $(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-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 \
        $(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 cd0857c..3b8bf84 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-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 \
        $(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-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 \
        $(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 b41de0a..fc4cf45 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-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 \
        $(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-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 \
        $(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 ce2315f..ae536ed 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-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 \
        $(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-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 \
        $(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 d606d54..1687a2e 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-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 \
        $(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-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 \
        $(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 57064c3..10ec6da 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-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 \
        $(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-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 \
        $(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 7f07c90..7d7f167 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_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
        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_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
        ZFS_AC_KERNEL_RQ_IS_SYNC
        ZFS_AC_KERNEL_RQ_FOR_EACH_SEGMENT
        ZFS_AC_KERNEL_CONST_XATTR_HANDLER
index a82acd6..60b844d 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:]]' \
        { $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"
 
 
        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 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:]]' \
        { $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"
 
 
        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 rq_is_sync() is available" >&5
 $as_echo_n "checking whether rq_is_sync() is available... " >&6; }
        tmp_flags="$EXTRA_KCFLAGS"
index 09807b6..8ab747c 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-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 \
        $(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-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 \
        $(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 4d7868e..e9376e1 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-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 \
        $(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-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 \
        $(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 12a7711..53fe585 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-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 \
        $(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-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 \
        $(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 b2be7ac..2249324 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-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 \
        $(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-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 \
        $(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 1edb4f2..5f36b78 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-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 \
        $(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-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 \
        $(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 df81588..026a6ad 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-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 \
        $(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-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 \
        $(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 52e3e2c..80cd72e 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-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 \
        $(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-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 \
        $(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 b949360..6e2229c 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-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 \
        $(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-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 \
        $(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 e75e45a..ee367a5 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_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 *);
 extern void    efi_free(struct dk_gpt *);
 extern int     efi_type(int);
 extern void    efi_err_check(struct dk_gpt *);
index 0ad4f3e..c5383e8 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-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 \
        $(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-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 \
        $(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 acecb67..a121817 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-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 \
        $(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-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 \
        $(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 9f3ad2b..8ef1491 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-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 \
        $(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-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 \
        $(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 2fa4c42..eb1177b 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-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 \
        $(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-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 \
        $(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 ac732f6..5a6043d 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-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 \
        $(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-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 \
        $(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 e6ba6a1..88fb19c 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-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 \
        $(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-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 \
        $(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 80886bb..f4cf417 100644 (file)
@@ -497,10 +497,9 @@ efi_ioctl(int fd, int cmd, dk_efi_t *dk_ioc)
        return (error);
 }
 
        return (error);
 }
 
-#if defined(__linux__)
-static int
-efi_rescan(int fd)
+int efi_rescan(int fd)
 {
 {
+#if defined(__linux__)
        int retry = 5;
        int error;
 
        int retry = 5;
        int error;
 
@@ -512,10 +511,10 @@ efi_rescan(int fd)
                        return (-1);
                }
        }
                        return (-1);
                }
        }
+#endif
 
        return (0);
 }
 
        return (0);
 }
-#endif
 
 static int
 check_label(int fd, dk_efi_t *dk_ioc)
 
 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);
 
        (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);
 }
 
        return (0);
 }
 
index df25328..78a1ccd 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-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 \
        $(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-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 \
        $(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 1932417..8a3d50f 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-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 \
        $(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-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 \
        $(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 35696e1..935f476 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-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 \
        $(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-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 \
        $(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 14af6a6..d4cbca2 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-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 \
        $(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-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 \
        $(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 31823b9..53f7743 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-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 \
        $(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-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 \
        $(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 7c6ff51..95754c3 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-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 \
        $(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-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 \
        $(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 73d2fe6..668183f 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-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 \
        $(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-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 \
        $(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 32e350e..5aff82a 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-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 \
        $(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-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 \
        $(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 8bf72d4..2ee47ff 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-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 \
        $(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-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 \
        $(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 c114a85..6f8e483 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-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 \
        $(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-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 \
        $(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 71fee17..09d03e9 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-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 \
        $(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-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 \
        $(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 e3eeee4..3026368 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-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 \
        $(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-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 \
        $(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 d09a7ed..7106d85 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-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 \
        $(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-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 \
        $(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 6b0cafe..49f579a 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-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 \
        $(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-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 \
        $(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 1af0fa9..f13cdd0 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-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 \
        $(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-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 \
        $(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 c9185fe..7ab2532 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-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 \
        $(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-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 \
        $(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 11d0b38..c5b3ffd 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-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 \
        $(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-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 \
        $(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 fa9f36c..8339305 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.
         * 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);
         */
        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;
 
        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-
                /*
                 * Some block drivers (like pcata) may not support EFI
                 * GPT labels.  Print out a helpful error message dir-
index 8181321..ad573d4 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-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 \
        $(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-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 \
        $(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 fc9ef75..83c2ec9 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-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 \
        $(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-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 \
        $(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 20fa620..000f0af 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-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 \
        $(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-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 \
        $(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 b4dbc61..e0ca5c9 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-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 \
        $(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-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 \
        $(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 28a4861..eee03d0 100644 (file)
@@ -158,10 +158,75 @@ vdev_elevator_switch(vdev_t *v, char *elevator)
        return (error);
 }
 
        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)
 {
 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;
 
        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);
         * 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);
        if (IS_ERR(bdev)) {
                kmem_free(vd, sizeof(vdev_disk_t));
                return -PTR_ERR(bdev);
index ff7c33e..053ab80 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-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 \
        $(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-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 \
        $(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 9f69032..fb54f2a 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-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 \
        $(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-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 \
        $(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 a83ba7e..8797779 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-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 \
        $(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-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 \
        $(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 ccd79c8..b4e1c9f 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-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 \
        $(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-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 \
        $(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 373e17f..f6dc932 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-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 \
        $(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-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 \
        $(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 36e6a52..cc2e150 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-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 \
        $(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-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 \
        $(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 5761ebc..c566138 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-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 \
        $(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-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 \
        $(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 eacdfa7..0398fa2 100644 (file)
@@ -9,6 +9,9 @@
 /* bio_end_io_t wants 2 args */
 #undef HAVE_2ARGS_BIO_END_IO_T
 
 /* 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
 
 /* security_inode_init_security wants 6 args */
 #undef HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY
 
 /* blk_disk_ro() is available */
 #undef HAVE_GET_DISK_RO
 
 /* 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
 
 /* Define to 1 if licensed under the GPL */
 #undef HAVE_GPL_ONLY_SYMBOLS