diff options
author | Christoph Hellwig <hch@lst.de> | 2025-01-10 08:37:34 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2025-01-10 07:31:50 -0700 |
commit | 09ccf5549d7809671af34774bb30c8f935d6ed2b (patch) | |
tree | c3224ee0cca9c1032b735c237027880f1550380b | |
parent | 781fc49a0e5c111b1a210bd1b3499c89bb21cd81 (diff) |
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>
-rw-r--r-- | drivers/block/loop.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 55bea9c95b45..cf80cdf5e440 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -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 |