zfs/include
Tim Chase 3937ab20f3 Allow for lock-free reading zfsdev_state_list.
Restructure the zfsdev_state_list to allow for lock-free reading by
converting to a simple singly-linked list from which items are never
deleted and over which only forward iterations are performed.  It depends
on, among other things, the atomicity of accessing the zs_minor integer
and zs_next pointer.

This fixes a lock inversion in which the zfsdev_state_lock is used by
both the sync task (txg_sync) and indirectly by any user program which
uses /dev/zfs; the zfsdev_release method uses the same lock and then
blocks on the sync task.

The most typical failure scenerio occurs when the sync task is cleaning
up a user hold while various concurrent "zfs" commands are in progress.

Neither Illumos nor Solaris are affected by this issue because they use
DDI interface which provides lock-free reading of device state via the
ddi_get_soft_state() function.

Signed-off-by: Tim Chase <tim@chase2k.com>
Signed-off-by: Chunwei Chen <tuxoko@gmail.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #2301
2014-05-19 11:45:11 -07:00
..
linux Implement File Attribute Support 2014-05-01 10:11:18 -07:00
sys Allow for lock-free reading zfsdev_state_list. 2014-05-19 11:45:11 -07:00
Makefile.am Illumos #2882, #2883, #2900 2013-09-04 15:49:00 -07: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 Replace zpool_events_next() "block" parm w/ "flags" 2014-03-31 16:11:21 -07:00
libzfs_core.h Illumos #3996 2013-11-05 12:23:11 -08:00
libzfs_impl.h Remove ZFC_IOC_*_MINOR ioctl()s 2013-12-16 09:15:57 -08:00
zfeature_common.h Illumos #3035 LZ4 compression support in ZFS and GRUB 2013-01-29 09:28:20 -08:00
zfs_comutil.h Illumos #2882, #2883, #2900 2013-09-04 15:49:00 -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 Check the dataset type more rigorously when fetching properties. 2014-05-06 10:41:46 -07:00
zpios-ctl.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
zpios-internal.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00