summaryrefslogtreecommitdiff
path: root/Documentation/block/ioprio.rst
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2024-01-17 20:59:01 +0300
committerJens Axboe <axboe@kernel.dk>2024-01-18 18:20:52 +0300
commitbaa7d536077dcdfe2b70c476a8873d1745d3de0f (patch)
tree1e5d7c0416c8c363035e004195419c7b3d29b35b /Documentation/block/ioprio.rst
parent49e60333d743ae32db3bdde2f93bc818482dd741 (diff)
downloadlinux-baa7d536077dcdfe2b70c476a8873d1745d3de0f.tar.xz
loop: fix the the direct I/O support check when used on top of block devices
__loop_update_dio only checks the alignment requirement for block backed file systems, but misses them for the case where the loop device is created directly on top of another block device. Due to this creating a loop device with default option plus the direct I/O flag on a > 512 byte sector size file system will lead to incorrect I/O being submitted to the lower block device and a lot of error from the lock layer. This can be seen with xfstests generic/563. Fix the code in __loop_update_dio by factoring the alignment check into a helper, and calling that also for the struct block_device of a block device inode. Also remove the TODO comment talking about dynamically switching between buffered and direct I/O, which is a would be a recipe for horrible performance and occasional data loss. Fixes: 2e5ab5f379f9 ("block: loop: prepare for supporing direct IO") Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Ming Lei <ming.lei@redhat.com> Link: https://lore.kernel.org/r/20240117175901.871796-1-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'Documentation/block/ioprio.rst')
0 files changed, 0 insertions, 0 deletions