Fix read-only pool hang on unmount
During mount a filesystem dataset would have the MS_RDONLY bit incorrectly cleared even if the entire pool was read-only. There is existing to code to handle this case but it was being run before the property callbacks were registered. To resolve the issue we move this read-only code after the callback registration. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #1338
This commit is contained in:
parent
76351672c2
commit
c9ada6d5a0
@ -233,10 +233,11 @@ zfs_register_callbacks(zfs_sb_t *zsb)
|
||||
{
|
||||
struct dsl_dataset *ds = NULL;
|
||||
objset_t *os = zsb->z_os;
|
||||
boolean_t do_readonly = B_FALSE;
|
||||
int error = 0;
|
||||
|
||||
if (zfs_is_readonly(zsb) || !spa_writeable(dmu_objset_spa(os)))
|
||||
readonly_changed_cb(zsb, B_TRUE);
|
||||
do_readonly = B_TRUE;
|
||||
|
||||
/*
|
||||
* Register property callbacks.
|
||||
@ -271,6 +272,9 @@ zfs_register_callbacks(zfs_sb_t *zsb)
|
||||
if (error)
|
||||
goto unregister;
|
||||
|
||||
if (do_readonly)
|
||||
readonly_changed_cb(zsb, B_TRUE);
|
||||
|
||||
return (0);
|
||||
|
||||
unregister:
|
||||
|
Loading…
Reference in New Issue
Block a user