Print this page
4168 ztest assertion failure in dbuf_undirty
4169 verbatim import causes zdb to segfault
4170 zhack leaves pool in ACTIVE state
Reviewed by: Adam Leventhal <ahl@delphix.com>
Reviewed by: Eric Schrock <eric.schrock@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/dbuf.c
          +++ new/usr/src/uts/common/fs/zfs/dbuf.c
↓ open down ↓ 1326 lines elided ↑ open up ↑
1327 1327                  if (dr->dr_txg <= txg)
1328 1328                          break;
1329 1329          if (dr == NULL || dr->dr_txg < txg)
1330 1330                  return (B_FALSE);
1331 1331          ASSERT(dr->dr_txg == txg);
1332 1332          ASSERT(dr->dr_dbuf == db);
1333 1333  
1334 1334          DB_DNODE_ENTER(db);
1335 1335          dn = DB_DNODE(db);
1336 1336  
1337      -        /*
1338      -         * Note:  This code will probably work even if there are concurrent
1339      -         * holders, but it is untested in that scenerio, as the ZPL and
1340      -         * ztest have additional locking (the range locks) that prevents
1341      -         * that type of concurrent access.
1342      -         */
1343      -        ASSERT3U(refcount_count(&db->db_holds), ==, db->db_dirtycnt);
1344      -
1345 1337          dprintf_dbuf(db, "size=%llx\n", (u_longlong_t)db->db.db_size);
1346 1338  
1347 1339          ASSERT(db->db.db_size != 0);
1348 1340  
1349 1341          /*
1350 1342           * Any space we accounted for in dp_dirty_* will be cleaned up by
1351 1343           * dsl_pool_sync().  This is relatively rare so the discrepancy
1352 1344           * is not a big deal.
1353 1345           */
1354 1346  
↓ open down ↓ 1456 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX