freebsd-dev/module/zfs
Brian Behlendorf 91604b298c Open pools asynchronously after module load
One of the side effects of calling zvol_create_minors() in
zvol_init() is that all pools listed in the cache file will
be opened.  Depending on the state and contents of your pool
this operation can take a considerable length of time.

Doing this at load time is undesirable because the kernel
is holding a global module lock.  This prevents other modules
from loading and can serialize an otherwise parallel boot
process.  Doing this after module inititialization also
reduces the chances of accidentally introducing a race
during module init.

To ensure that /dev/zvol/<pool>/<dataset> devices are
still automatically created after the module load completes
a udev rules has been added.  When udev notices that the
/dev/zfs device has been create the 'zpool list' command
will be run.  This then will cause all the pools listed
in the zpool.cache file to be opened.

Because this process in now driven asynchronously by udev
there is the risk of problems in downstream distributions.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #756
Issue #1020
Issue #1234
2013-07-03 09:24:38 -07:00
..
arc.c Illumos #3498 panic in arc_read() 2013-07-02 13:34:31 -07:00
bplist.c Switch KM_SLEEP to KM_PUSHPAGE 2012-08-27 12:01:37 -07:00
bpobj.c Illumos #3006 2013-06-19 15:14:10 -07:00
bptree.c Illumos #3498 panic in arc_read() 2013-07-02 13:34:31 -07:00
dbuf.c Illumos #3498 panic in arc_read() 2013-07-02 13:34:31 -07:00
ddt_zap.c Add ddt_object_count() error handling 2012-10-29 08:57:45 -07:00
ddt.c Fix incorrect assertions in ddt_phys_decref and ddt_sync_entry 2013-05-06 14:10:55 -07:00
dmu_diff.c Illumos #3498 panic in arc_read() 2013-07-02 13:34:31 -07:00
dmu_object.c
dmu_objset.c Illumos #3498 panic in arc_read() 2013-07-02 13:34:31 -07:00
dmu_send.c Illumos #3498 panic in arc_read() 2013-07-02 13:34:31 -07:00
dmu_traverse.c Illumos #3498 panic in arc_read() 2013-07-02 13:34:31 -07:00
dmu_tx.c Illumos #3006 2013-06-19 15:14:10 -07:00
dmu_zfetch.c Switch KM_SLEEP to KM_PUSHPAGE 2012-08-27 12:01:37 -07:00
dmu.c Illumos #3086: unnecessarily setting DS_FLAG_INCONSISTENT on async 2013-01-08 10:35:43 -08:00
dnode_sync.c Illumos #3006 2013-06-19 15:14:10 -07:00
dnode.c Illumos #3006 2013-06-19 15:14:10 -07:00
dsl_dataset.c Illumos #3498 panic in arc_read() 2013-07-02 13:34:31 -07:00
dsl_deadlist.c Illumos #3104: eliminate empty bpobjs 2013-01-08 10:35:43 -08:00
dsl_deleg.c Illumos #2619 and #2747 2013-01-08 10:35:35 -08:00
dsl_dir.c Illumos #3006 2013-06-19 15:14:10 -07:00
dsl_pool.c Illumos #3006 2013-06-19 15:14:10 -07:00
dsl_prop.c Switch KM_SLEEP to KM_PUSHPAGE 2012-09-17 11:22:23 -07:00
dsl_scan.c Illumos #3498 panic in arc_read() 2013-07-02 13:34:31 -07:00
dsl_synctask.c Illumos #3006 2013-06-19 15:14:10 -07:00
fm.c Condition variable usage, zevent_cv 2012-10-15 16:01:54 -07:00
gzip.c
lz4.c Linux 3.9 compat: Undefine GCC_VERSION 2013-03-06 15:48:48 -08:00
lzjb.c Switch KM_SLEEP to KM_PUSHPAGE 2012-08-27 12:01:37 -07:00
Makefile.in Illumos #3035 LZ4 compression support in ZFS and GRUB 2013-01-29 09:28:20 -08:00
metaslab.c Illumos #3552, #3564 2013-06-19 16:22:39 -07:00
refcount.c Switch KM_SLEEP to KM_PUSHPAGE 2012-08-27 12:01:37 -07:00
rrwlock.c
sa.c Constify structures containing function pointers 2013-03-04 08:49:32 -08:00
sha256.c
spa_boot.c
spa_config.c Illumos #2619 and #2747 2013-01-08 10:35:35 -08:00
spa_errlog.c
spa_history.c Switch KM_SLEEP to KM_PUSHPAGE 2012-08-27 12:01:37 -07:00
spa_misc.c Illumos #3329, #3330, #3331, #3335 2013-05-06 12:39:34 -07:00
spa.c Call zvol_create_minors() in spa_open_common() when initializing pool 2013-07-03 09:22:44 -07:00
space_map.c Illumos #3552, #3564 2013-06-19 16:22:39 -07:00
txg.c Fix txg_quiesce thread deadlock 2013-04-26 14:42:36 -07:00
uberblock.c
unique.c Switch KM_SLEEP to KM_PUSHPAGE 2012-08-27 12:01:37 -07:00
vdev_cache.c Switch KM_SLEEP to KM_PUSHPAGE 2012-08-27 12:01:37 -07:00
vdev_disk.c 3246 ZFS I/O deadman thread 2013-05-01 17:05:52 -07:00
vdev_file.c Illumos #3581 spa_zio_taskq[ZIO_TYPE_FREE][ZIO_TASKQ_ISSUE]->tq_lock contention 2013-05-06 14:05:37 -07:00
vdev_label.c Illumos #3090 and #3102 2013-01-08 10:35:42 -08:00
vdev_mirror.c Illumos #1948: zpool list should show more detailed pool info 2012-09-19 13:39:05 -07:00
vdev_missing.c Illumos #1948: zpool list should show more detailed pool info 2012-09-19 13:39:05 -07:00
vdev_queue.c 3246 ZFS I/O deadman thread 2013-05-01 17:05:52 -07:00
vdev_raidz.c Illumos #3006 2013-06-19 15:14:10 -07:00
vdev_root.c Illumos #1948: zpool list should show more detailed pool info 2012-09-19 13:39:05 -07:00
vdev.c Illumos #3552, #3564 2013-06-19 16:22:39 -07:00
zap_leaf.c Switch KM_SLEEP to KM_PUSHPAGE 2012-09-05 08:44:58 -07:00
zap_micro.c Illumos #3006 2013-06-19 15:14:10 -07:00
zap.c Illumos #3006 2013-06-19 15:14:10 -07:00
zfeature_common.c Illumos #3035 LZ4 compression support in ZFS and GRUB 2013-01-29 09:28:20 -08:00
zfeature.c Illumos #3104: eliminate empty bpobjs 2013-01-08 10:35:43 -08:00
zfs_acl.c Avoid gcc -Werror=maybe-uninitialized warnings 2013-01-28 09:10:29 -08:00
zfs_byteswap.c
zfs_ctldir.c Use dsl_dataset_snap_lookup() 2013-01-25 15:07:40 -08:00
zfs_debug.c Illumos #3006 2013-06-19 15:14:10 -07:00
zfs_dir.c Trivial spelling fix 2013-04-19 15:43:16 -07:00
zfs_fm.c 3246 ZFS I/O deadman thread 2013-05-01 17:05:52 -07:00
zfs_fuid.c
zfs_ioctl.c Call zvol_create_minors() in spa_open_common() when initializing pool 2013-07-03 09:22:44 -07:00
zfs_log.c Revert "Remove TSD zfs_fsyncer_key" 2012-12-20 09:56:28 -08:00
zfs_onexit.c
zfs_replay.c Constify structures containing function pointers 2013-03-04 08:49:32 -08:00
zfs_rlock.c Illumos #3006 2013-06-19 15:14:10 -07:00
zfs_sa.c Revert "Use SA_HDL_PRIVATE for SA xattrs" 2012-08-25 09:25:56 -07:00
zfs_vfsops.c Fix zfs_sb_teardown/zfs_resume_fs NULL dereference 2013-07-01 14:51:45 -07:00
zfs_vnops.c Add SEEK_DATA/SEEK_HOLE to lseek()/llseek() 2013-07-02 09:24:43 -07:00
zfs_znode.c Illumos #3006 2013-06-19 15:14:10 -07:00
zil.c Illumos #3498 panic in arc_read() 2013-07-02 13:34:31 -07:00
zio_checksum.c
zio_compress.c Illumos #3035 LZ4 compression support in ZFS and GRUB 2013-01-29 09:28:20 -08:00
zio_inject.c 3246 ZFS I/O deadman thread 2013-05-01 17:05:52 -07:00
zio.c Illumos #3498 panic in arc_read() 2013-07-02 13:34:31 -07:00
zle.c
zpl_ctldir.c Add d_clear_d_op() compatibility 2013-01-23 16:33:29 -08:00
zpl_export.c Implement .commit_metadata hook for NFS export 2012-10-03 10:49:45 -07:00
zpl_file.c Add SEEK_DATA/SEEK_HOLE to lseek()/llseek() 2013-07-02 09:24:43 -07:00
zpl_inode.c Add explicit MAXNAMELEN check 2013-02-12 10:27:39 -08:00
zpl_super.c Update SAs when an inode is dirtied 2012-12-14 12:18:54 -08:00
zpl_xattr.c Only check directory xattr on ENOENT 2013-05-10 12:24:56 -07:00
zrlock.c
zvol.c Open pools asynchronously after module load 2013-07-03 09:24:38 -07:00