zfs/include
Brian Behlendorf 8128bd89fb Fix hot spares
The issue with hot spares in ZoL is because it opens all leaf
vdevs exclusively (O_EXCL).  On Linux, exclusive opens cause
subsequent exclusive opens to fail with EBUSY.

This could be resolved by not opening any of the devices
exclusively, which is what Illumos does, but the additional
protection offered by exclusive opens is desirable.  It cleanly
prevents you from accidentally adding an in-use non-ZFS device
to your pool.

To fix this we very slightly relaxed the usage of O_EXCL in
the following ways.

1) Functions which open the device but only read had the
   O_EXCL flag removed and were updated to use O_RDONLY.

2) A common holder was added to the vdev disk code.  This
   allow the ZFS code to internally open the device multiple
   times but non-ZFS callers may not.

3) An exception was added to make_disks() for hot spare when
   creating partition tables.  For hot spare devices which
   are already opened exclusively we skip creating the partition
   table because this must already have been done when the disk
   was originally added as a hot spare.

Additional minor changes include fixing check_in_use() to use
a partition instead of a slice suffix.  And is_spare() was moved
above make_disks() to avoid adding a forward reference.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #250
2013-03-01 13:31:02 -08:00
..
linux Fix hot spares 2013-03-01 13:31:02 -08:00
sys Remove NPTL_GUARD_WITHIN_STACK 2013-01-29 10:58:20 -08:00
Makefile.am Illumos #2619 and #2747 2013-01-08 10:35:35 -08:00
libnvpair.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
libuutil.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
libuutil_common.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
libuutil_impl.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
libzfs.h Retire zpool_id infrastructure 2013-01-29 12:23:17 -08:00
libzfs_impl.h Illumos #1644, #1645, #1646, #1647, #1708 2012-07-31 09:25:30 -07:00
zfeature_common.h Illumos #3035 LZ4 compression support in ZFS and GRUB 2013-01-29 09:28:20 -08:00
zfs_comutil.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
zfs_deleg.h Illumos #278: get rid zfs of python and pyzfs dependencies 2011-08-01 12:09:36 -07:00
zfs_fletcher.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
zfs_namecheck.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
zfs_prop.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
zpios-ctl.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
zpios-internal.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00