[Devel] [PATCH rh7 4/4] ploop: get rid of direct calls to file->f_op->fsync()

Maxim Patlasov mpatlasov at virtuozzo.com
Wed May 18 18:23:49 PDT 2016


The patch hides file->f_op->fsync() in dio_sync. The only exception is
dio_truncate where "file" may come from userspace fd.

Signed-off-by: Maxim Patlasov <mpatlasov at virtuozzo.com>
---
 drivers/block/ploop/io_direct.c |   13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/drivers/block/ploop/io_direct.c b/drivers/block/ploop/io_direct.c
index 1ff848c..8096110 100644
--- a/drivers/block/ploop/io_direct.c
+++ b/drivers/block/ploop/io_direct.c
@@ -405,8 +405,7 @@ try_again:
 			}
 
 			/* flush new i_size to disk */
-			err = io->files.file->f_op->fsync(io->files.file, 0,
-							  LLONG_MAX, 0);
+			err = io->ops->sync(io);
 			if (err)
 				goto end_write;
 
@@ -524,8 +523,8 @@ dio_post_submit(struct ploop_io *io, struct ploop_request * preq)
 					      FALLOC_FL_CONVERT_UNWRITTEN,
 					      (loff_t)sec << 9, clu_siz);
 	if (!err)
-		err = io->files.file->f_op->fsync(io->files.file, 0,
-						  LLONG_MAX, 0);
+		err = io->ops->sync(io);
+
 	file_end_write(io->files.file);
 	if (err) {
 		PLOOP_REQ_SET_ERROR(preq, err);
@@ -814,8 +813,7 @@ static int dio_fsync_thread(void * data)
 		/* filemap_fdatawrite() has been made already */
 		filemap_fdatawait(io->files.mapping);
 
-		err = io->files.file->f_op->fsync(io->files.file, 0,
-						  LLONG_MAX, 0);
+		err = io->ops->sync(io);
 
 		/* Do we need to invalidate page cache? Not really,
 		 * because we use it only to create full new pages,
@@ -1367,8 +1365,7 @@ static int dio_alloc_sync(struct ploop_io * io, loff_t pos, loff_t len)
 	if (err)
 		goto fail;
 
-	err = io->files.file->f_op->fsync(io->files.file, 0,
-					  LLONG_MAX, 0);
+	err = io->ops->sync(io);
 	if (err)
 		goto fail;
 



More information about the Devel mailing list