1
0
mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2026-01-11 17:10:13 +00:00

loop: only write back pagecache when starting to to use direct I/O

There is no point in doing an fdatasync to write out pages when switching
away from direct I/O, as there won't be any.  The writeback is only
needed when switching to direct I/O, which would have to invalidate the
pagecache less efficiently from the I/O path.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20250110073750.1582447-5-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Christoph Hellwig 2025-01-10 08:37:34 +01:00 committed by Jens Axboe
parent 781fc49a0e
commit 09ccf5549d

View File

@ -203,8 +203,9 @@ static void __loop_update_dio(struct loop_device *lo, bool dio)
if (lo->use_dio == use_dio)
return;
/* flush dirty pages before changing direct IO */
vfs_fsync(lo->lo_backing_file, 0);
/* flush dirty pages before starting to use direct I/O */
if (use_dio)
vfs_fsync(lo->lo_backing_file, 0);
/*
* The flag of LO_FLAGS_DIRECT_IO is handled similarly with