freebsd-nq/sys/cddl
Andriy Gapon c3249989ef l2arc: make sure that all writes honor ashift of a cache device
Previously uncompressed buffers did not obey that rule.

Type of b_asize is changed to uint64_t for consistency,
given that this is a zeta-byte filesystem.

l2arc_compress_buf is renamed to l2arc_transform_buf to better reflect
its new utility.  Now not only we ensure that a compressed buffer has
a size aligned to ashift, but we also allocate a properly sized
temporary buffer if the original buffer is not compressed and it has
an odd size.  This ensures that all I/O to the cache device is always
ashift-aligned, in terms of both a request offset and a request size.

If the aligned data is larger than the original data, then we have to use
a temporary buffer when reading it as well.

Also, enhance physical zio alignment checks using vdev_logical_ashift.
On FreeBSD we have this information, so we can make stricter assertions.

Reviewed by: smh, mav
MFC after:	1 month
Sponsored by:	ClusterHQ
Differential Revision: https://reviews.freebsd.org/D2789
2016-04-12 06:56:35 +00:00
..
boot/zfs Fix const conversion warning in lz4_decompress 2016-01-06 20:28:09 +00:00
compat/opensolaris remove emulation of VFS_HOLD and VFS_RELE from opensolaris compat 2016-04-02 16:25:46 +00:00
contrib/opensolaris l2arc: make sure that all writes honor ashift of a cache device 2016-04-12 06:56:35 +00:00
dev Initialize SDT probes during SI_SUB_DTRACE_PROVIDER. 2016-04-10 01:24:27 +00:00