diff options
Diffstat (limited to 'sys-fs/zfs/files/zfs-0.6.1-fix-zvol-initialization-r1.patch')
-rw-r--r-- | sys-fs/zfs/files/zfs-0.6.1-fix-zvol-initialization-r1.patch | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/sys-fs/zfs/files/zfs-0.6.1-fix-zvol-initialization-r1.patch b/sys-fs/zfs/files/zfs-0.6.1-fix-zvol-initialization-r1.patch deleted file mode 100644 index b1e7d3736db0..000000000000 --- a/sys-fs/zfs/files/zfs-0.6.1-fix-zvol-initialization-r1.patch +++ /dev/null @@ -1,167 +0,0 @@ -diff --git a/module/zfs/spa.c b/module/zfs/spa.c -index e986e92..65f78b7 100644 ---- a/module/zfs/spa.c -+++ b/module/zfs/spa.c -@@ -64,6 +64,7 @@ - #include <sys/zfs_ioctl.h> - #include <sys/dsl_scan.h> - #include <sys/zfeature.h> -+#include <sys/zvol.h> - - #ifdef _KERNEL - #include <sys/bootprops.h> -@@ -2856,6 +2857,7 @@ spa_open_common(const char *pool, spa_t **spapp, void *tag, nvlist_t *nvpolicy, - spa_load_state_t state = SPA_LOAD_OPEN; - int error; - int locked = B_FALSE; -+ int firstopen = B_FALSE; - - *spapp = NULL; - -@@ -2879,6 +2881,8 @@ spa_open_common(const char *pool, spa_t **spapp, void *tag, nvlist_t *nvpolicy, - if (spa->spa_state == POOL_STATE_UNINITIALIZED) { - zpool_rewind_policy_t policy; - -+ firstopen = B_TRUE; -+ - zpool_get_rewind_policy(nvpolicy ? nvpolicy : spa->spa_config, - &policy); - if (policy.zrp_request & ZPOOL_DO_REWIND) -@@ -2953,6 +2957,11 @@ spa_open_common(const char *pool, spa_t **spapp, void *tag, nvlist_t *nvpolicy, - mutex_exit(&spa_namespace_lock); - } - -+#ifdef _KERNEL -+ if (firstopen) -+ zvol_create_minors(spa->spa_name); -+#endif -+ - *spapp = spa; - - return (0); -@@ -4010,6 +4019,10 @@ spa_import(const char *pool, nvlist_t *config, nvlist_t *props, uint64_t flags) - mutex_exit(&spa_namespace_lock); - spa_history_log_version(spa, LOG_POOL_IMPORT); - -+#ifdef _KERNEL -+ zvol_create_minors(pool); -+#endif -+ - return (0); - } - -diff --git a/module/zfs/zfs_ioctl.c b/module/zfs/zfs_ioctl.c -index 1226b2c..a9184a1 100644 ---- a/module/zfs/zfs_ioctl.c -+++ b/module/zfs/zfs_ioctl.c -@@ -1268,9 +1268,6 @@ zfs_ioc_pool_import(zfs_cmd_t *zc) - error = err; - } - -- if (error == 0) -- zvol_create_minors(zc->zc_name); -- - nvlist_free(config); - - if (props) -diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c -index 43a7bb6..e35c91b 100644 ---- a/module/zfs/zvol.c -+++ b/module/zfs/zvol.c -@@ -1215,6 +1215,9 @@ zvol_alloc(dev_t dev, const char *name) - - zv = kmem_zalloc(sizeof (zvol_state_t), KM_SLEEP); - -+ spin_lock_init(&zv->zv_lock); -+ list_link_init(&zv->zv_next); -+ - zv->zv_queue = blk_init_queue(zvol_request, &zv->zv_lock); - if (zv->zv_queue == NULL) - goto out_kmem; -@@ -1248,9 +1251,6 @@ zvol_alloc(dev_t dev, const char *name) - sizeof (rl_t), offsetof(rl_t, r_node)); - zv->zv_znode.z_is_zvol = TRUE; - -- spin_lock_init(&zv->zv_lock); -- list_link_init(&zv->zv_next); -- - zv->zv_disk->major = zvol_major; - zv->zv_disk->first_minor = (dev & MINORMASK); - zv->zv_disk->fops = &zvol_ops; -@@ -1561,30 +1561,36 @@ zvol_init(void) - { - int error; - -+ list_create(&zvol_state_list, sizeof (zvol_state_t), -+ offsetof(zvol_state_t, zv_next)); -+ mutex_init(&zvol_state_lock, NULL, MUTEX_DEFAULT, NULL); -+ - zvol_taskq = taskq_create(ZVOL_DRIVER, zvol_threads, maxclsyspri, - zvol_threads, INT_MAX, TASKQ_PREPOPULATE); - if (zvol_taskq == NULL) { - printk(KERN_INFO "ZFS: taskq_create() failed\n"); -- return (-ENOMEM); -+ error = -ENOMEM; -+ goto out1; - } - - error = register_blkdev(zvol_major, ZVOL_DRIVER); - if (error) { - printk(KERN_INFO "ZFS: register_blkdev() failed %d\n", error); -- taskq_destroy(zvol_taskq); -- return (error); -+ goto out2; - } - - blk_register_region(MKDEV(zvol_major, 0), 1UL << MINORBITS, - THIS_MODULE, zvol_probe, NULL, NULL); - -- mutex_init(&zvol_state_lock, NULL, MUTEX_DEFAULT, NULL); -- list_create(&zvol_state_list, sizeof (zvol_state_t), -- offsetof(zvol_state_t, zv_next)); -+ return (0); - -- (void) zvol_create_minors(NULL); -+out2: -+ taskq_destroy(zvol_taskq); -+out1: -+ mutex_destroy(&zvol_state_lock); -+ list_destroy(&zvol_state_list); - -- return (0); -+ return (error); - } - - void -diff --git a/scripts/zconfig.sh b/scripts/zconfig.sh -index 141348c..281166c 100755 ---- a/scripts/zconfig.sh -+++ b/scripts/zconfig.sh -@@ -264,8 +264,9 @@ test_4() { - zconfig_zvol_device_stat 0 ${POOL_NAME} ${FULL_ZVOL_NAME} \ - ${FULL_SNAP_NAME} ${FULL_CLONE_NAME} || fail 9 - -- # Load the modules, wait 1 second for udev -+ # Load the modules, list the pools to ensure they are opened - ${ZFS_SH} zfs="spa_config_path=${TMP_CACHE}" || fail 10 -+ ${ZPOOL} list &>/dev/null - - # Verify the devices were created - zconfig_zvol_device_stat 10 ${POOL_NAME} ${FULL_ZVOL_NAME} \ -diff --git a/udev/rules.d/90-zfs.rules.in b/udev/rules.d/90-zfs.rules.in -index 52e1d63..a2715d2 100644 ---- a/udev/rules.d/90-zfs.rules.in -+++ b/udev/rules.d/90-zfs.rules.in -@@ -1,4 +1,4 @@ --SUBSYSTEM!="block", GOTO="zfs_end" -+SUBSYSTEM!="block|misc", GOTO="zfs_end" - ACTION!="add|change", GOTO="zfs_end" - - ENV{ID_FS_TYPE}=="zfs", RUN+="/sbin/modprobe zfs" -@@ -7,4 +7,6 @@ ENV{ID_FS_TYPE}=="zfs_member", RUN+="/sbin/modprobe zfs" - KERNEL=="null", SYMLINK+="root" - SYMLINK=="null", SYMLINK+="root" - -+SUBSYSTEM=="misc", KERNEL=="zfs", RUN+="@sbindir@/zpool list" -+ - LABEL="zfs_end" |