mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-18 10:21:01 +03:00
Make txg_wait_synced conditional in zfsvfs_teardown
The call to txg_wait_synced in zfsvfs_teardown should be made conditional on the objset having dirty data. This can prevent unnecessary txg_wait_synced during some unmount operations. Reviewed-by: Matt Ahrens <matt@delphix.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Paul Zuchowski <pzuchowski@datto.com> Closes #9115
This commit is contained in:
parent
93fd9101c9
commit
9d4ca81b6f
@ -1785,8 +1785,17 @@ zfsvfs_teardown(zfsvfs_t *zfsvfs, boolean_t unmounting)
|
|||||||
* Evict cached data. We must write out any dirty data before
|
* Evict cached data. We must write out any dirty data before
|
||||||
* disowning the dataset.
|
* disowning the dataset.
|
||||||
*/
|
*/
|
||||||
if (!zfs_is_readonly(zfsvfs))
|
objset_t *os = zfsvfs->z_os;
|
||||||
|
boolean_t os_dirty = B_FALSE;
|
||||||
|
for (int t = 0; t < TXG_SIZE; t++) {
|
||||||
|
if (dmu_objset_is_dirty(os, t)) {
|
||||||
|
os_dirty = B_TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!zfs_is_readonly(zfsvfs) && os_dirty) {
|
||||||
txg_wait_synced(dmu_objset_pool(zfsvfs->z_os), 0);
|
txg_wait_synced(dmu_objset_pool(zfsvfs->z_os), 0);
|
||||||
|
}
|
||||||
dmu_objset_evict_dbufs(zfsvfs->z_os);
|
dmu_objset_evict_dbufs(zfsvfs->z_os);
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
|
Loading…
Reference in New Issue
Block a user