zl_itx_list_sz is used for performance to help determine
a reasonable sized next block in the the log chain.
It holds the sum of all the record sizes in the in core
itx list. For records that precopy the data (ie O_DSYNC)
where we know we will soon push out the itx record, then
the record size is correct and zl_itx_list_sz is correct.
For records where we get the data later (WR_NEED_COPY)
the data we need to copy isn't included in the record
size do zl_itx_list_sz is incorrect.
This bug makes log block allocation ineffiecient and may
cause additional records to be written.
This is because zil_commit_writer() will try to squeeze additional
records into any unused potion of the log block and uses this
wrong record size, so will potentially need to allocate another block.
Then the cycle would continue.
It causes a bigger problem for some prototype code that relies
on a correct zl_itx_list_sz for when to use txg_waited_sync() or not.