mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-01-12 19:20:28 +03:00
Merge zvol.c changes from PSARC 2010/306 Read-only ZFS pools
The changes to zvol.c were never merged from the last onnv_147 bulk update. This was because zvol.c was largely rewritten for Linux making it fairly easy to miss these sorts of changes. This causes a regression when importing a zpool with zvols read-only. This does not impact pool which only contain filesystem datasets. References: illumos/illumos-gate@f9af39b Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #1332 Closes #1333
This commit is contained in:
parent
b01615d5ac
commit
a4430fce69
@ -941,7 +941,8 @@ zvol_first_open(zvol_state_t *zv)
|
|||||||
zv->zv_zilog = zil_open(os, zvol_get_data);
|
zv->zv_zilog = zil_open(os, zvol_get_data);
|
||||||
|
|
||||||
VERIFY(dsl_prop_get_integer(zv->zv_name, "readonly", &ro, NULL) == 0);
|
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);
|
set_disk_ro(zv->zv_disk, 1);
|
||||||
zv->zv_flags |= ZVOL_RDONLY;
|
zv->zv_flags |= ZVOL_RDONLY;
|
||||||
} else {
|
} else {
|
||||||
@ -1352,10 +1353,12 @@ __zvol_create_minor(const char *name)
|
|||||||
queue_flag_set_unlocked(QUEUE_FLAG_NONROT, zv->zv_queue);
|
queue_flag_set_unlocked(QUEUE_FLAG_NONROT, zv->zv_queue);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (zil_replay_disable)
|
if (spa_writeable(dmu_objset_spa(os))) {
|
||||||
zil_destroy(dmu_objset_zil(os), B_FALSE);
|
if (zil_replay_disable)
|
||||||
else
|
zil_destroy(dmu_objset_zil(os), B_FALSE);
|
||||||
zil_replay(os, zv, zvol_replay_vector);
|
else
|
||||||
|
zil_replay(os, zv, zvol_replay_vector);
|
||||||
|
}
|
||||||
|
|
||||||
zv->zv_objset = NULL;
|
zv->zv_objset = NULL;
|
||||||
out_dmu_objset_disown:
|
out_dmu_objset_disown:
|
||||||
|
Loading…
Reference in New Issue
Block a user