L2ARC does not support devices that do not provide 512B access
There are disk devices that have logical sector size larger than 512B, for example 4KB. That is, their physical sector size is larger than 512B and they do not provide emulation for 512B sector sizes. For such devices both a data offset and a data size must be properly aligned. L2ARC should arrange that because it uses physical I/O.
zio_vdev_io_start() performs a necessary transformation if io_size is not aligned to vdev_ashift, but that is done only for logical I/O. Something similar should be done in L2ARC code.
- a temporary write buffer should be allocated if the original buffer is not going to be compressed and its size is not aligned
- size of a temporary compression buffer should be ashift aligned
- for the reads, if a size of a target buffer is not sufficiently large and it is not aligned then a temporary read buffer should be allocated
Updated by Electric Monk about 5 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
commit 403a8da73c64ff9dfb6230ba045c765a242213fb Author: Andriy Gapon <avg@FreeBSD.org> Date: 2017-06-13T20:06:13.000Z 5220 L2ARC does not support devices that do not provide 512B access Reviewed by: George Wilson <email@example.com> Reviewed by: Dan Kimmel <firstname.lastname@example.org> Reviewed by: Saso Kiselkov <email@example.com> Approved by: Dan McDonald <firstname.lastname@example.org>