Print this page
6319 assertion failed in zio_ddt_write: bp->blk_birth == txg
Reviewed by: George Wilson <george.wilson@delphix.com>
Approved by: Dan McDonald <danmcd@omniti.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/zio.c
          +++ new/usr/src/uts/common/fs/zfs/zio.c
↓ open down ↓ 1125 lines elided ↑ open up ↑
1126 1126                          return (ZIO_PIPELINE_CONTINUE);
1127 1127  
1128 1128                  ASSERT(zio_checksum_table[zp->zp_checksum].ci_dedup ||
1129 1129                      zp->zp_dedup_verify);
1130 1130  
1131 1131                  if (BP_GET_CHECKSUM(bp) == zp->zp_checksum) {
1132 1132                          BP_SET_DEDUP(bp, 1);
1133 1133                          zio->io_pipeline |= ZIO_STAGE_DDT_WRITE;
1134 1134                          return (ZIO_PIPELINE_CONTINUE);
1135 1135                  }
     1136 +                zio->io_bp_override = NULL;
     1137 +                BP_ZERO(bp);
1136 1138          }
1137 1139  
1138 1140          if (!BP_IS_HOLE(bp) && bp->blk_birth == zio->io_txg) {
1139 1141                  /*
1140 1142                   * We're rewriting an existing block, which means we're
1141 1143                   * working on behalf of spa_sync().  For spa_sync() to
1142 1144                   * converge, it must eventually be the case that we don't
1143 1145                   * have to allocate new blocks.  But compression changes
1144 1146                   * the blocksize, which forces a reallocate, and makes
1145 1147                   * convergence take longer.  Therefore, after the first
↓ open down ↓ 2206 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX