]> granicus.if.org Git - zfs/commitdiff
Illumos 5311 - traverse_dnode may report success when it should not
authorJustin T. Gibbs <justing@spectralogic.com>
Sun, 23 Nov 2014 03:14:24 +0000 (19:14 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 6 Feb 2015 20:07:15 +0000 (12:07 -0800)
5311 traverse_dnode may report success when it should not
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Andriy Gapon <avg@FreeBSD.org>
Reviewed by: Will Andrews <willa@spectralogic.com>
Approved by: Dan McDonald <danmcd@omniti.com>

References:
  https://github.com/illumos/illumos-gate/commit/2a89c2c
  https://www.illumos.org/issues/5311

Ported by: DHE <git@dehacked.net>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #2970

module/zfs/dmu_traverse.c

index b090bc2fc54848ce77d12a1cbdb3e67f66ce650a..b5c1ec758f8b250e50d94c9641eb206aa502d449 100644 (file)
@@ -438,7 +438,7 @@ traverse_dnode(traverse_data_t *td, const dnode_phys_t *dnp,
                        break;
        }
 
-       if (dnp->dn_flags & DNODE_FLAG_SPILL_BLKPTR) {
+       if (err == 0 && dnp->dn_flags & DNODE_FLAG_SPILL_BLKPTR) {
                SET_BOOKMARK(&czb, objset, object, 0, DMU_SPILL_BLKID);
                err = traverse_visitbp(td, dnp, &dnp->dn_spill, &czb);
        }