Deleted Added
full compact
23,24d22
< */
< /*
25a24
> * Copyright (c) 2012 by Delphix. All rights reserved.
432a432
> uint64_t l0span = 0, nl1blks = 0;
464a465
> l0span = nblks; /* save for later use to calc level > 1 overhead */
476a478
> nl1blks = 1;
480,494d481
< /*
< * Add in memory requirements of higher-level indirects.
< * This assumes a worst-possible scenario for dn_nlevels.
< */
< {
< uint64_t blkcnt = 1 + ((nblks >> epbs) >> epbs);
< int level = (dn->dn_nlevels > 1) ? 2 : 1;
<
< while (level++ < DN_MAX_LEVELS) {
< txh->txh_memory_tohold += blkcnt << dn->dn_indblkshift;
< blkcnt = 1 + (blkcnt >> epbs);
< }
< ASSERT(blkcnt <= dn->dn_nblkptr);
< }
<
564a552
> ++nl1blks;
569a558,580
> /*
> * Add in memory requirements of higher-level indirects.
> * This assumes a worst-possible scenario for dn_nlevels and a
> * worst-possible distribution of l1-blocks over the region to free.
> */
> {
> uint64_t blkcnt = 1 + ((l0span >> epbs) >> epbs);
> int level = 2;
> /*
> * Here we don't use DN_MAX_LEVEL, but calculate it with the
> * given datablkshift and indblkshift. This makes the
> * difference between 19 and 8 on large files.
> */
> int maxlevel = 2 + (DN_MAX_OFFSET_SHIFT - dn->dn_datablkshift) /
> (dn->dn_indblkshift - SPA_BLKPTRSHIFT);
>
> while (level++ < maxlevel) {
> txh->txh_memory_tohold += MAX(MIN(blkcnt, nl1blks), 1)
> << dn->dn_indblkshift;
> blkcnt = 1 + (blkcnt >> epbs);
> }
> }
>
679c690
< ASSERT3P(dmu_ot[dn->dn_type].ot_byteswap, ==, zap_byteswap);
---
> ASSERT3P(DMU_OT_BYTESWAP(dn->dn_type), ==, DMU_BSWAP_ZAP);
903c914
< ASSERT3U(tx->tx_txg, ==, 0);
---
> ASSERT0(tx->tx_txg);