From 3eff30685e5d492bf5d101e37c26f9fed9d55003 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Mon, 2 Aug 2010 21:41:42 -0700 Subject: [PATCH] Set zv->zv_objset for zil_replay() case For the case where we have a zil to replay we need to ensure that zv->zv_objset contains the current objset. Since the caller has a hold on the object set it is safe to pass to zil_replay as part of the zv. Call path zvol_create_minor()->zil_replay()-> zil_parse()->zil_replay_log_record()->zvol_replay_write(). --- module/zfs/zvol.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c index e93d94897e..16c65d348c 100644 --- a/module/zfs/zvol.c +++ b/module/zfs/zvol.c @@ -1118,6 +1118,7 @@ __zvol_create_minor(const char *name) zv->zv_flags |= ZVOL_RDONLY; zv->zv_volblocksize = doi->doi_data_block_size; + zv->zv_objset = os; if (zil_replay_disable) zil_destroy(dmu_objset_zil(os), B_FALSE); @@ -1130,6 +1131,7 @@ __zvol_create_minor(const char *name) out_dmu_objset_disown: dmu_objset_disown(os, zvol_tag); + zv->zv_objset = NULL; out_doi: kmem_free(doi, sizeof(dmu_object_info_t)); out: