From cdd590f8b91066fe4379f2de94f867517d274650 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Thu, 20 May 2010 16:59:02 -0700 Subject: [PATCH] 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! --- module/zfs/zvol.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c index 03c3d16885..9235bfb46f 100644 --- a/module/zfs/zvol.c +++ b/module/zfs/zvol.c @@ -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); }