freebsd-dev/config
Etienne Dechamps b5a28807cd Move partition scanning from userspace to module.
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
2012-07-17 09:17:31 -07:00
..
always-no-unused-but-set-variable.m4 In autoconf v2.68, AC_LANG_PROGRAM must be quoted 2011-11-28 11:16:33 -08:00
arch.am Add make rule for building Arch Linux packages 2011-12-14 19:14:23 -08:00
config.awk Add build system 2010-08-31 13:41:27 -07:00
config.guess Add initial autoconf products 2010-08-31 13:42:02 -07:00
config.sub Add initial autoconf products 2010-08-31 13:42:02 -07:00
deb.am Avoid 'rpm -q' bug for 'make pkg' 2011-07-01 12:39:25 -07:00
depcomp Add initial autoconf products 2010-08-31 13:42:02 -07:00
install-sh Add initial autoconf products 2010-08-31 13:42:02 -07:00
kernel-automount.m4 Add .zfs control directory 2012-03-22 13:03:47 -07:00
kernel-bdev-block-device-operations.m4 Fix configure tests to play nice with GCC 4.6 2011-11-29 16:14:25 -08:00
kernel-bdev-logical-size.m4 Fix configure tests to play nice with GCC 4.6 2011-11-29 16:14:25 -08:00
kernel-bdi-setup-and-register.m4 Simplify BDI integration 2011-11-08 10:19:03 -08:00
kernel-bdi.m4 Add backing_device_info per-filesystem 2011-08-04 13:37:38 -07:00
kernel-bio-empty-barrier.m4 Add build system 2010-08-31 13:41:27 -07:00
kernel-bio-end-io-t-args.m4 Fix gcc configure warnings 2011-04-19 10:10:47 -07:00
kernel-bio-failfast.m4 Fix gcc configure warnings 2011-04-19 10:10:47 -07:00
kernel-bio-rw-syncio.m4 Fix gcc configure warnings 2011-04-19 10:10:47 -07:00
kernel-blk-end-request.m4 Fix configure tests to play nice with GCC 4.6 2011-11-29 16:14:25 -08:00
kernel-blk-fetch-request.m4 Fix configure tests to play nice with GCC 4.6 2011-11-29 16:14:25 -08:00
kernel-blk-queue-discard.m4 Add support for DISCARD to ZVOLs. 2012-02-09 16:19:38 -08:00
kernel-blk-queue-flush.m4 Fix synchronicity for ZVOLs. 2012-02-07 16:23:06 -08:00
kernel-blk-queue-io-opt.m4 Improve ZVOL queue behavior. 2012-02-07 16:23:06 -08:00
kernel-blk-queue-max-hw-sectors.m4 Improve ZVOL queue behavior. 2012-02-07 16:23:06 -08:00
kernel-blk-queue-max-segments.m4 Improve ZVOL queue behavior. 2012-02-07 16:23:06 -08:00
kernel-blk-queue-nonrot.m4 Improve ZVOL queue behavior. 2012-02-07 16:23:06 -08:00
kernel-blk-queue-physical-block-size.m4 Improve ZVOL queue behavior. 2012-02-07 16:23:06 -08:00
kernel-blk-requeue-request.m4 Fix configure tests to play nice with GCC 4.6 2011-11-29 16:14:25 -08:00
kernel-blk-rq-bytes.m4 Fix configure tests to play nice with GCC 4.6 2011-11-29 16:14:25 -08:00
kernel-blk-rq-pos.m4 Fix configure tests to play nice with GCC 4.6 2011-11-29 16:14:25 -08:00
kernel-blk-rq-sectors.m4 Fix configure tests to play nice with GCC 4.6 2011-11-29 16:14:25 -08:00
kernel-blkdev-get-by-path.m4 Linux 2.6.38 compat, blkdev_get_by_path() 2011-02-23 12:29:38 -08:00
kernel-blkdev-get.m4 Move partition scanning from userspace to module. 2012-07-17 09:17:31 -07:00
kernel-check-disk-size-change.m4 Fix 'zfs set volsize=N pool/dataset' 2011-05-02 08:54:40 -07:00
kernel-create-umode-t.m4 Linux 3.3 compat, iops->create()/mkdir()/mknod() 2012-04-30 12:52:38 -07:00
kernel-d-make-root.m4 Linux 3.4 compat, d_make_root() replaces d_alloc_root() 2012-06-11 10:04:49 -07:00
kernel-d-obtain-alias.m4 Implemented NFS export_operations. 2011-04-29 12:36:13 -07:00
kernel-evict-inode.m4 Improve HAVE_EVICT_INODE check 2011-08-08 16:42:09 -07:00
kernel-fallocate.m4 Support the fallocate() file operation. 2012-02-09 16:19:32 -08:00
kernel-fmode-t.m4 Fix gcc configure warnings 2011-04-19 10:10:47 -07:00
kernel-fsync.m4 Linux 3.1 compat, fops->fsync() 2011-11-10 10:03:08 -08:00
kernel-get-disk-ro.m4 Fix configure tests to play nice with GCC 4.6 2011-11-29 16:14:25 -08:00
kernel-get-gendisk.m4 Move partition scanning from userspace to module. 2012-07-17 09:17:31 -07:00
kernel-insert-inode-locked.m4 Linux 2.6.28 compat, insert_inode_locked() 2011-03-22 12:15:54 -07:00
kernel-invalidate-bdev-args.m4 Fix gcc configure warnings 2011-04-19 10:10:47 -07:00
kernel-kobj-name-len.m4 Fix gcc configure warnings 2011-04-19 10:10:47 -07:00
kernel-mount-nodev.m4 Linux compat 2.6.39: mount_nodev() 2011-07-01 13:36:39 -07:00
kernel-open-bdev-exclusive.m4 Add build system 2010-08-31 13:41:27 -07:00
kernel-rq-for-each_segment.m4 Fix configure tests to play nice with GCC 4.6 2011-11-29 16:14:25 -08:00
kernel-rq-is_sync.m4 Fix configure tests to play nice with GCC 4.6 2011-11-29 16:14:25 -08:00
kernel-security-inode-init.m4 Linux 3.2 compat, security_inode_init_security() 2012-01-12 15:06:39 -08:00
kernel-set-nlink.m4 Linux 3.2 compat: set_nlink() 2011-12-16 20:02:52 -08:00
kernel-show-options.m4 Linux 3.3 compat, sops->show_options() 2012-02-03 10:02:01 -08:00
kernel-shrink.m4 Linux 3.1 compat, super_block->s_shrink 2012-01-11 11:46:02 -08:00
kernel-truncate-setsize.m4 Tear down and flush the mmap region 2011-06-27 09:59:19 -07:00
kernel-xattr-handler.m4 Fix gcc configure warnings 2011-04-19 10:10:47 -07:00
kernel.m4 Move partition scanning from userspace to module. 2012-07-17 09:17:31 -07:00
ltmain.sh Fix executable permissions 2012-03-26 11:52:44 -07:00
missing Add initial autoconf products 2010-08-31 13:42:02 -07:00
rpm.am Add --enable-debug-dmu-tx configure option 2012-03-23 12:25:17 -07:00
Rules.am Check for -Wno-unused-but-set-variable gcc support 2011-06-14 14:43:22 -07:00
suppressed-warnings.txt Suppress packaging warning 2011-11-08 11:32:04 -08:00
tgz.am Avoid 'rpm -q' bug for 'make pkg' 2011-07-01 12:39:25 -07:00
user-arch.m4 Add build system 2010-08-31 13:41:27 -07:00
user-frame-larger-than.m4 In autoconf v2.68, AC_LANG_PROGRAM must be quoted 2011-11-28 11:16:33 -08:00
user-ioctl.m4 Add build system 2010-08-31 13:41:27 -07:00
user-libblkid.m4 In autoconf v2.68, AC_LANG_PROGRAM must be quoted 2011-11-28 11:16:33 -08:00
user-libuuid.m4 Add build system 2010-08-31 13:41:27 -07:00
user-nptl_guard_within_stack.m4 In autoconf v2.68, AC_LANG_PROGRAM must be quoted 2011-11-28 11:16:33 -08:00
user-selinux.m4 Autoconf selinux support 2011-01-28 12:45:19 -08:00
user-udev.m4 Move udev rules from /etc/udev to /lib/udev 2011-08-08 16:21:10 -07:00
user-zlib.m4 Add build system 2010-08-31 13:41:27 -07:00
user.m4 Move udev rules from /etc/udev to /lib/udev 2011-08-08 16:21:10 -07:00
zfs-build.m4 Add --enable-debug-dmu-tx configure option 2012-03-23 12:25:17 -07:00
zfs-meta.m4 Add build system 2010-08-31 13:41:27 -07:00