From 7adf9d19f39093f1bd53ae415cb626d09aa1a3f4 Mon Sep 17 00:00:00 2001 From: chrisrd Date: Sat, 3 Mar 2018 05:01:53 +1100 Subject: [PATCH] Increment zil_itx_needcopy_bytes properly In zil_lwb_commit() with TX_WRITE, we copy the log write record (lrw) into the log write block (lwb) and send it off using zil_lwb_add_txg(). If we also have WR_NEED_COPY, we additionally copy the lwr's data into the lwb to be sent off. If the lwr + data doesn't fit into the lwb, we send the lrw and as much data as will fit (dnow bytes), then go back and do the same with the remaining data. Each time through this loop we're sending dnow data bytes. I.e. zil_itx_needcopy_bytes should be incremented by dnow. Reviewed-by: Richard Elling Reviewed-by: Brian Behlendorf Signed-off-by: Chris Dunlop Closes #6988 Closes #7176 --- module/zfs/zil.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/module/zfs/zil.c b/module/zfs/zil.c index 4d714cefc758..645b1d4d80ba 100644 --- a/module/zfs/zil.c +++ b/module/zfs/zil.c @@ -1167,8 +1167,7 @@ zil_lwb_commit(zilog_t *zilog, itx_t *itx, lwb_t *lwb) lrw->lr_offset += dnow; lrw->lr_length -= dnow; ZIL_STAT_BUMP(zil_itx_needcopy_count); - ZIL_STAT_INCR(zil_itx_needcopy_bytes, - lrw->lr_length); + ZIL_STAT_INCR(zil_itx_needcopy_bytes, dnow); } else { ASSERT(itx->itx_wr_state == WR_INDIRECT); dbuf = NULL;