Print this page
4082 zfs receive gets EFBIG from dmu_tx_hold_free()
Reviewed by: Eric Schrock <eric.schrock@delphix.com>
Reviewed by: Christopher Siden <christopher.siden@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>

@@ -603,11 +603,10 @@
         if (off >= (dn->dn_maxblkid+1) * dn->dn_datablksz)
                 return;
         if (len == DMU_OBJECT_END)
                 len = (dn->dn_maxblkid+1) * dn->dn_datablksz - off;
 
-
         /*
          * For i/o error checking, we read the first and last level-0
          * blocks if they are not aligned, and all the level-1 blocks.
          *
          * Note:  dbuf_free_range() assumes that we have not instantiated

@@ -615,11 +614,11 @@
          * exercise care to not read or count the first and last blocks
          * if they are blocksize-aligned.
          */
         if (dn->dn_datablkshift == 0) {
                 if (off != 0 || len < dn->dn_datablksz)
-                        dmu_tx_count_write(txh, off, len);
+                        dmu_tx_count_write(txh, 0, dn->dn_datablksz);
         } else {
                 /* first block will be modified if it is not aligned */
                 if (!IS_P2ALIGNED(off, 1 << dn->dn_datablkshift))
                         dmu_tx_count_write(txh, off, 1);
                 /* last block will be modified if it is not aligned */