OpenSolaris

Printable Version Enter a New Search
Bug ID 6658511
Synopsis zl_itx_list_sz incorrect for WR_NEED_COPY writes
State 10-Fix Delivered (Fix available in build)
Category:Subcategory kernel:zfs
Keywords
Responsible Engineer Neil Perrin
Reported Against
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_85
Fixed In snv_85
Release Fixed solaris_nevada(snv_85) , solaris_10u6(s10u6_01) (Bug ID:2160954)
Related Bugs
Submit Date 2-February-2008
Last Update Date 28-April-2008
Description
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.
Work Around
N/A
Comments
N/A