diff options
author | Matthew Ahrens <[email protected]> | 2014-01-24 09:54:37 -0600 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2014-01-29 15:50:49 -0800 |
commit | 8b4646494c23fc17c7cc5f7a857e27c463540098 (patch) | |
tree | f6bcac190b882f7442af269748f262a66b6cb8a1 | |
parent | 6d111134c0d1eb9b179eb9fddf26a31d5d45ae22 (diff) |
Illumos 4504 traverse_visitbp: visit group before user
4504 traverse_visitbp: visit DMU_GROUPUSED_OBJECT before DMU_USERUSED_OBJECT
Reviewed by: Christopher Siden <[email protected]>
Reviewed by: George Wilson <[email protected]>
References:
https://illumos.org/issues/4504
http://code.delphix.com/illumos-4504
http://svnweb.freebsd.org/base?view=revision&revision=260812
Signed-off-by: Brian Behlendorf <[email protected]>
Signed-off-by: Tim Chase <[email protected]>
Closes #2079
-rw-r--r-- | module/zfs/dmu_traverse.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/module/zfs/dmu_traverse.c b/module/zfs/dmu_traverse.c index e6d18df51..bd291c6a8 100644 --- a/module/zfs/dmu_traverse.c +++ b/module/zfs/dmu_traverse.c @@ -335,9 +335,9 @@ traverse_visitbp(traverse_data_t *td, const dnode_phys_t *dnp, prefetch_dnode_metadata(td, dnp, zb->zb_objset, DMU_META_DNODE_OBJECT); if (arc_buf_size(buf) >= sizeof (objset_phys_t)) { - prefetch_dnode_metadata(td, &osp->os_userused_dnode, - zb->zb_objset, DMU_USERUSED_OBJECT); prefetch_dnode_metadata(td, &osp->os_groupused_dnode, + zb->zb_objset, DMU_GROUPUSED_OBJECT); + prefetch_dnode_metadata(td, &osp->os_userused_dnode, zb->zb_objset, DMU_USERUSED_OBJECT); } @@ -348,18 +348,18 @@ traverse_visitbp(traverse_data_t *td, const dnode_phys_t *dnp, err = 0; } if (err == 0 && arc_buf_size(buf) >= sizeof (objset_phys_t)) { - dnp = &osp->os_userused_dnode; + dnp = &osp->os_groupused_dnode; err = traverse_dnode(td, dnp, zb->zb_objset, - DMU_USERUSED_OBJECT); + DMU_GROUPUSED_OBJECT); } if (err && TD_HARD(td)) { lasterr = err; err = 0; } if (err == 0 && arc_buf_size(buf) >= sizeof (objset_phys_t)) { - dnp = &osp->os_groupused_dnode; + dnp = &osp->os_userused_dnode; err = traverse_dnode(td, dnp, zb->zb_objset, - DMU_GROUPUSED_OBJECT); + DMU_USERUSED_OBJECT); } } |