X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=module%2Fzfs%2Fzvol.c;fp=module%2Fzfs%2Fzvol.c;h=b0d59fe0c7aa6b0be507f7c2cee2f10dc219d8ba;hb=a4430fce691d492aec382de0dfa937c05ee16500;hp=f8e32567609ff3cef794c152120011ef355995e8;hpb=b01615d5ac86913da1e092d0378bfb8f0e72af30;p=zfs.git diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c index f8e3256..b0d59fe 100644 --- a/module/zfs/zvol.c +++ b/module/zfs/zvol.c @@ -941,7 +941,8 @@ zvol_first_open(zvol_state_t *zv) zv->zv_zilog = zil_open(os, zvol_get_data); VERIFY(dsl_prop_get_integer(zv->zv_name, "readonly", &ro, NULL) == 0); - if (ro || dmu_objset_is_snapshot(os)) { + if (ro || dmu_objset_is_snapshot(os) || + !spa_writeable(dmu_objset_spa(os))) { set_disk_ro(zv->zv_disk, 1); zv->zv_flags |= ZVOL_RDONLY; } else { @@ -1352,10 +1353,12 @@ __zvol_create_minor(const char *name) queue_flag_set_unlocked(QUEUE_FLAG_NONROT, zv->zv_queue); #endif - if (zil_replay_disable) - zil_destroy(dmu_objset_zil(os), B_FALSE); - else - zil_replay(os, zv, zvol_replay_vector); + if (spa_writeable(dmu_objset_spa(os))) { + if (zil_replay_disable) + zil_destroy(dmu_objset_zil(os), B_FALSE); + else + zil_replay(os, zv, zvol_replay_vector); + } zv->zv_objset = NULL; out_dmu_objset_disown: