-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.csiden.org/r/229/#review764
-----------------------------------------------------------

Ship it!


Ship It!

- George Wilson


On June 25, 2015, 12:34 p.m., Andriy Gapon wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.csiden.org/r/229/
> -----------------------------------------------------------
> 
> (Updated June 25, 2015, 12:34 p.m.)
> 
> 
> Review request for OpenZFS Developer Mailing List, Justin Gibbs, George 
> Wilson, Matthew Ahrens, and Saso Kiselkov.
> 
> 
> Bugs: 5219
>     https://www.illumos.org/issues/5219
> 
> 
> Repository: illumos-gate
> 
> 
> Description
> -------
> 
> **NOTE: this review request supercedes 
> [#112](https://reviews.csiden.org/r/112/).**
> 
> If we don't account for that, then we might end up overwriting disk
> area of buffers that have not been evicted yet, because l2arc_evict
> operates in terms of disk addresses.
> 
> The discrepancy between the write size calculation and the actual increment
> to l2ad_hand was introduced in
> commit 
> [aad02571bc59671aa3103bb070ae365f531b0b62](https://github.com/illumos/illumos-gate/commit/aad02571bc59671aa3103bb070ae365f531b0b62)
> 
> The change that introduced l2ad_hand alignment was almost correct
> as the write size was accumulated as a sum of rounded buffer sizes.
> See commit 
> [e14bb3258d05c1b1077e2db7cf77088924e56919](https://github.com/illumos/illumos-gate/commit/e14bb3258d05c1b1077e2db7cf77088924e56919)
> 
> Also, we now consistently use asize / a_sz for the allocated size and
> psize / p_sz for the physical size.
> The latter accounts for a possible size reduction because of the compression,
> whereas the former accounts for a possible subsequent size expansion
> because of the alignment requirements.
> 
> The code still assumes that either underlying storage subsystems or
> hardware is able to do read-modify-write when an L2ARC buffer size is
> not a multiple of a disk's block size.  This is true for 4KB sector disks
> that provide 512B sector emulation, but may not be true in general.
> In other words, we currently do not have any code to make sure that
> an L2ARC buffer, whether compressed or not, which is used for physical I/O
> has a suitable size.
> 
> Note that currently the cache device utilization is calculated based
> on the physical size, not the allocated size.  The same applies to l2_asize
> kstat. That is wrong, but this commit does not fix that.
> The accounting problem was introduced partially in
> commit 
> [aad02571bc59671aa3103bb070ae365f531b0b62](https://github.com/illumos/illumos-gate/commit/aad02571bc59671aa3103bb070ae365f531b0b62)
> and partially in 
> [3038a2b421b40dc5ac11cd88423696618584f85a](https://github.com/illumos/illumos-gate/commit/3038a2b421b40dc5ac11cd88423696618584f85a)
> (accounting became consistent but in favour of the wrong size).
> 
> 
> Diffs
> -----
> 
>   usr/src/uts/common/fs/zfs/arc.c 09d2e1dd8fdf6648d863d4c036c16b3f7981dbf5 
> 
> Diff: https://reviews.csiden.org/r/229/diff/
> 
> 
> Testing
> -------
> 
> FreeBSD and Linux.
> 
> 
> Thanks,
> 
> Andriy Gapon
> 
>

_______________________________________________
developer mailing list
developer@open-zfs.org
http://lists.open-zfs.org/mailman/listinfo/developer

Reply via email to