diff mbox series

[4/8] loop: only write back pagecache when starting to to use direct I/O

Message ID 20250110073750.1582447-5-hch@lst.de (mailing list archive)
State New
Headers show
Series [1/8] loop: move updating lo_flags out of loop_set_status_from_info | expand

Commit Message

Christoph Hellwig Jan. 10, 2025, 7:37 a.m. UTC
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>
---
 drivers/block/loop.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
diff mbox series

Patch

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