Recreate volume and snapshot /dev links during module load.

Links in /dev for volumes/snapshots were only being created
at volume/snapshot creation time.  Those links are now also
created dynamically at module load time based on the spa config.
In other words all you need to do to get access to your zfs
datasets after a reboot is load the module.  It's magic!
This commit is contained in:
Brian Behlendorf 2010-05-20 16:59:02 -07:00
parent da41056e9b
commit cdd590f8b9
1 changed files with 21 additions and 0 deletions

View File

@ -1095,6 +1095,25 @@ out:
return (-error);
}
static int
zvol_create_minors_cb(spa_t *spa, uint64_t dsobj,
const char *dsname, void *arg)
{
return zvol_create_minor(dsname);
}
static void
zvol_create_minors(void)
{
spa_t *spa = NULL;
mutex_enter(&spa_namespace_lock);
while ((spa = spa_next(spa)) != NULL)
(void) dmu_objset_find_spa(NULL, spa_name(spa), zvol_create_minors_cb,
NULL, DS_FIND_CHILDREN | DS_FIND_SNAPSHOTS);
mutex_exit(&spa_namespace_lock);
}
/*
* Remove a block device minor node for the specified volume.
*/
@ -1187,6 +1206,8 @@ zvol_init(void)
list_create(&zvol_state_list, sizeof (zvol_state_t),
offsetof(zvol_state_t, zv_next));
zvol_create_minors();
return (0);
}