Print this page
3006 VERIFY[S,U,P] and ASSERT[S,U,P] frequently check if first argument is zero
        
*** 135,170 ****
  
          for (i = 0; i < TXG_SIZE; i++) {
                  ASSERT(!list_link_active(&dn->dn_dirty_link[i]));
                  avl_destroy(&dn->dn_ranges[i]);
                  list_destroy(&dn->dn_dirty_records[i]);
!                 ASSERT3U(dn->dn_next_nblkptr[i], ==, 0);
!                 ASSERT3U(dn->dn_next_nlevels[i], ==, 0);
!                 ASSERT3U(dn->dn_next_indblkshift[i], ==, 0);
!                 ASSERT3U(dn->dn_next_bonustype[i], ==, 0);
!                 ASSERT3U(dn->dn_rm_spillblk[i], ==, 0);
!                 ASSERT3U(dn->dn_next_bonuslen[i], ==, 0);
!                 ASSERT3U(dn->dn_next_blksz[i], ==, 0);
          }
  
!         ASSERT3U(dn->dn_allocated_txg, ==, 0);
!         ASSERT3U(dn->dn_free_txg, ==, 0);
!         ASSERT3U(dn->dn_assigned_txg, ==, 0);
!         ASSERT3U(dn->dn_dirtyctx, ==, 0);
          ASSERT3P(dn->dn_dirtyctx_firstset, ==, NULL);
          ASSERT3P(dn->dn_bonus, ==, NULL);
          ASSERT(!dn->dn_have_spill);
          ASSERT3P(dn->dn_zio, ==, NULL);
!         ASSERT3U(dn->dn_oldused, ==, 0);
!         ASSERT3U(dn->dn_oldflags, ==, 0);
!         ASSERT3U(dn->dn_olduid, ==, 0);
!         ASSERT3U(dn->dn_oldgid, ==, 0);
!         ASSERT3U(dn->dn_newuid, ==, 0);
!         ASSERT3U(dn->dn_newgid, ==, 0);
!         ASSERT3U(dn->dn_id_flags, ==, 0);
  
!         ASSERT3U(dn->dn_dbufs_count, ==, 0);
          list_destroy(&dn->dn_dbufs);
  }
  
  void
  dnode_init(void)
--- 135,170 ----
  
          for (i = 0; i < TXG_SIZE; i++) {
                  ASSERT(!list_link_active(&dn->dn_dirty_link[i]));
                  avl_destroy(&dn->dn_ranges[i]);
                  list_destroy(&dn->dn_dirty_records[i]);
!                 ASSERT0(dn->dn_next_nblkptr[i]);
!                 ASSERT0(dn->dn_next_nlevels[i]);
!                 ASSERT0(dn->dn_next_indblkshift[i]);
!                 ASSERT0(dn->dn_next_bonustype[i]);
!                 ASSERT0(dn->dn_rm_spillblk[i]);
!                 ASSERT0(dn->dn_next_bonuslen[i]);
!                 ASSERT0(dn->dn_next_blksz[i]);
          }
  
!         ASSERT0(dn->dn_allocated_txg);
!         ASSERT0(dn->dn_free_txg);
!         ASSERT0(dn->dn_assigned_txg);
!         ASSERT0(dn->dn_dirtyctx);
          ASSERT3P(dn->dn_dirtyctx_firstset, ==, NULL);
          ASSERT3P(dn->dn_bonus, ==, NULL);
          ASSERT(!dn->dn_have_spill);
          ASSERT3P(dn->dn_zio, ==, NULL);
!         ASSERT0(dn->dn_oldused);
!         ASSERT0(dn->dn_oldflags);
!         ASSERT0(dn->dn_olduid);
!         ASSERT0(dn->dn_oldgid);
!         ASSERT0(dn->dn_newuid);
!         ASSERT0(dn->dn_newgid);
!         ASSERT0(dn->dn_id_flags);
  
!         ASSERT0(dn->dn_dbufs_count);
          list_destroy(&dn->dn_dbufs);
  }
  
  void
  dnode_init(void)
*** 359,369 ****
  }
  
  static void
  dnode_setdblksz(dnode_t *dn, int size)
  {
!         ASSERT3U(P2PHASE(size, SPA_MINBLOCKSIZE), ==, 0);
          ASSERT3U(size, <=, SPA_MAXBLOCKSIZE);
          ASSERT3U(size, >=, SPA_MINBLOCKSIZE);
          ASSERT3U(size >> SPA_MINBLOCKSHIFT, <,
              1<<(sizeof (dn->dn_phys->dn_datablkszsec) * 8));
          dn->dn_datablksz = size;
--- 359,369 ----
  }
  
  static void
  dnode_setdblksz(dnode_t *dn, int size)
  {
!         ASSERT0(P2PHASE(size, SPA_MINBLOCKSIZE));
          ASSERT3U(size, <=, SPA_MAXBLOCKSIZE);
          ASSERT3U(size, >=, SPA_MINBLOCKSIZE);
          ASSERT3U(size >> SPA_MINBLOCKSHIFT, <,
              1<<(sizeof (dn->dn_phys->dn_datablkszsec) * 8));
          dn->dn_datablksz = size;
*** 504,531 ****
              (bonustype == DMU_OT_SA && bonuslen == 0) ||
              (bonustype != DMU_OT_NONE && bonuslen != 0));
          ASSERT(DMU_OT_IS_VALID(bonustype));
          ASSERT3U(bonuslen, <=, DN_MAX_BONUSLEN);
          ASSERT(dn->dn_type == DMU_OT_NONE);
!         ASSERT3U(dn->dn_maxblkid, ==, 0);
!         ASSERT3U(dn->dn_allocated_txg, ==, 0);
!         ASSERT3U(dn->dn_assigned_txg, ==, 0);
          ASSERT(refcount_is_zero(&dn->dn_tx_holds));
          ASSERT3U(refcount_count(&dn->dn_holds), <=, 1);
          ASSERT3P(list_head(&dn->dn_dbufs), ==, NULL);
  
          for (i = 0; i < TXG_SIZE; i++) {
!                 ASSERT3U(dn->dn_next_nblkptr[i], ==, 0);
!                 ASSERT3U(dn->dn_next_nlevels[i], ==, 0);
!                 ASSERT3U(dn->dn_next_indblkshift[i], ==, 0);
!                 ASSERT3U(dn->dn_next_bonuslen[i], ==, 0);
!                 ASSERT3U(dn->dn_next_bonustype[i], ==, 0);
!                 ASSERT3U(dn->dn_rm_spillblk[i], ==, 0);
!                 ASSERT3U(dn->dn_next_blksz[i], ==, 0);
                  ASSERT(!list_link_active(&dn->dn_dirty_link[i]));
                  ASSERT3P(list_head(&dn->dn_dirty_records[i]), ==, NULL);
!                 ASSERT3U(avl_numnodes(&dn->dn_ranges[i]), ==, 0);
          }
  
          dn->dn_type = ot;
          dnode_setdblksz(dn, blocksize);
          dn->dn_indblkshift = ibs;
--- 504,531 ----
              (bonustype == DMU_OT_SA && bonuslen == 0) ||
              (bonustype != DMU_OT_NONE && bonuslen != 0));
          ASSERT(DMU_OT_IS_VALID(bonustype));
          ASSERT3U(bonuslen, <=, DN_MAX_BONUSLEN);
          ASSERT(dn->dn_type == DMU_OT_NONE);
!         ASSERT0(dn->dn_maxblkid);
!         ASSERT0(dn->dn_allocated_txg);
!         ASSERT0(dn->dn_assigned_txg);
          ASSERT(refcount_is_zero(&dn->dn_tx_holds));
          ASSERT3U(refcount_count(&dn->dn_holds), <=, 1);
          ASSERT3P(list_head(&dn->dn_dbufs), ==, NULL);
  
          for (i = 0; i < TXG_SIZE; i++) {
!                 ASSERT0(dn->dn_next_nblkptr[i]);
!                 ASSERT0(dn->dn_next_nlevels[i]);
!                 ASSERT0(dn->dn_next_indblkshift[i]);
!                 ASSERT0(dn->dn_next_bonuslen[i]);
!                 ASSERT0(dn->dn_next_bonustype[i]);
!                 ASSERT0(dn->dn_rm_spillblk[i]);
!                 ASSERT0(dn->dn_next_blksz[i]);
                  ASSERT(!list_link_active(&dn->dn_dirty_link[i]));
                  ASSERT3P(list_head(&dn->dn_dirty_records[i]), ==, NULL);
!                 ASSERT0(avl_numnodes(&dn->dn_ranges[i]));
          }
  
          dn->dn_type = ot;
          dnode_setdblksz(dn, blocksize);
          dn->dn_indblkshift = ibs;
*** 563,573 ****
  {
          int nblkptr;
  
          ASSERT3U(blocksize, >=, SPA_MINBLOCKSIZE);
          ASSERT3U(blocksize, <=, SPA_MAXBLOCKSIZE);
!         ASSERT3U(blocksize % SPA_MINBLOCKSIZE, ==, 0);
          ASSERT(dn->dn_object != DMU_META_DNODE_OBJECT || dmu_tx_private_ok(tx));
          ASSERT(tx->tx_txg != 0);
          ASSERT((bonustype == DMU_OT_NONE && bonuslen == 0) ||
              (bonustype != DMU_OT_NONE && bonuslen != 0) ||
              (bonustype == DMU_OT_SA && bonuslen == 0));
--- 563,573 ----
  {
          int nblkptr;
  
          ASSERT3U(blocksize, >=, SPA_MINBLOCKSIZE);
          ASSERT3U(blocksize, <=, SPA_MAXBLOCKSIZE);
!         ASSERT0(blocksize % SPA_MINBLOCKSIZE);
          ASSERT(dn->dn_object != DMU_META_DNODE_OBJECT || dmu_tx_private_ok(tx));
          ASSERT(tx->tx_txg != 0);
          ASSERT((bonustype == DMU_OT_NONE && bonuslen == 0) ||
              (bonustype != DMU_OT_NONE && bonuslen != 0) ||
              (bonustype == DMU_OT_SA && bonuslen == 0));
*** 1233,1245 ****
                  return;
          }
  
          ASSERT(!refcount_is_zero(&dn->dn_holds) || list_head(&dn->dn_dbufs));
          ASSERT(dn->dn_datablksz != 0);
!         ASSERT3U(dn->dn_next_bonuslen[txg&TXG_MASK], ==, 0);
!         ASSERT3U(dn->dn_next_blksz[txg&TXG_MASK], ==, 0);
!         ASSERT3U(dn->dn_next_bonustype[txg&TXG_MASK], ==, 0);
  
          dprintf_ds(os->os_dsl_dataset, "obj=%llu txg=%llu\n",
              dn->dn_object, txg);
  
          if (dn->dn_free_txg > 0 && dn->dn_free_txg <= txg) {
--- 1233,1245 ----
                  return;
          }
  
          ASSERT(!refcount_is_zero(&dn->dn_holds) || list_head(&dn->dn_dbufs));
          ASSERT(dn->dn_datablksz != 0);
!         ASSERT0(dn->dn_next_bonuslen[txg&TXG_MASK]);
!         ASSERT0(dn->dn_next_blksz[txg&TXG_MASK]);
!         ASSERT0(dn->dn_next_bonustype[txg&TXG_MASK]);
  
          dprintf_ds(os->os_dsl_dataset, "obj=%llu txg=%llu\n",
              dn->dn_object, txg);
  
          if (dn->dn_free_txg > 0 && dn->dn_free_txg <= txg) {
*** 1585,1595 ****
          if (trunc)
                  tail = 0;
          else
                  tail = P2PHASE(len, blksz);
  
!         ASSERT3U(P2PHASE(off, blksz), ==, 0);
          /* zero out any partial block data at the end of the range */
          if (tail) {
                  if (len < tail)
                          tail = len;
                  if (dbuf_hold_impl(dn, 0, dbuf_whichblock(dn, off+len),
--- 1585,1595 ----
          if (trunc)
                  tail = 0;
          else
                  tail = P2PHASE(len, blksz);
  
!         ASSERT0(P2PHASE(off, blksz));
          /* zero out any partial block data at the end of the range */
          if (tail) {
                  if (len < tail)
                          tail = len;
                  if (dbuf_hold_impl(dn, 0, dbuf_whichblock(dn, off+len),
*** 1767,1777 ****
                  ASSERT3U(space, >=, -delta); /* no underflow */
          }
          space += delta;
          if (spa_version(dn->dn_objset->os_spa) < SPA_VERSION_DNODE_BYTES) {
                  ASSERT((dn->dn_phys->dn_flags & DNODE_FLAG_USED_BYTES) == 0);
!                 ASSERT3U(P2PHASE(space, 1<<DEV_BSHIFT), ==, 0);
                  dn->dn_phys->dn_used = space >> DEV_BSHIFT;
          } else {
                  dn->dn_phys->dn_used = space;
                  dn->dn_phys->dn_flags |= DNODE_FLAG_USED_BYTES;
          }
--- 1767,1777 ----
                  ASSERT3U(space, >=, -delta); /* no underflow */
          }
          space += delta;
          if (spa_version(dn->dn_objset->os_spa) < SPA_VERSION_DNODE_BYTES) {
                  ASSERT((dn->dn_phys->dn_flags & DNODE_FLAG_USED_BYTES) == 0);
!                 ASSERT0(P2PHASE(space, 1<<DEV_BSHIFT));
                  dn->dn_phys->dn_used = space >> DEV_BSHIFT;
          } else {
                  dn->dn_phys->dn_used = space;
                  dn->dn_phys->dn_flags |= DNODE_FLAG_USED_BYTES;
          }