From: Andreas Gruenbacher <agrue...@redhat.com>

Add a wrapper around iomap_file_buffered_write.  We'll add code for when
the operation needs to be retried here later.

Signed-off-by: Andreas Gruenbacher <agrue...@redhat.com>
---
 fs/gfs2/file.c | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c
index 84ec053d43b4..55ec1cadc9e6 100644
--- a/fs/gfs2/file.c
+++ b/fs/gfs2/file.c
@@ -876,6 +876,18 @@ static ssize_t gfs2_file_read_iter(struct kiocb *iocb, 
struct iov_iter *to)
        return written ? written : ret;
 }
 
+static ssize_t gfs2_file_buffered_write(struct kiocb *iocb, struct iov_iter 
*from)
+{
+       struct file *file = iocb->ki_filp;
+       struct inode *inode = file_inode(file);
+       ssize_t ret;
+
+       current->backing_dev_info = inode_to_bdi(inode);
+       ret = iomap_file_buffered_write(iocb, from, &gfs2_iomap_ops);
+       current->backing_dev_info = NULL;
+       return ret;
+}
+
 /**
  * gfs2_file_write_iter - Perform a write to a file
  * @iocb: The io context
@@ -927,9 +939,7 @@ static ssize_t gfs2_file_write_iter(struct kiocb *iocb, 
struct iov_iter *from)
                        goto out_unlock;
 
                iocb->ki_flags |= IOCB_DSYNC;
-               current->backing_dev_info = inode_to_bdi(inode);
-               buffered = iomap_file_buffered_write(iocb, from, 
&gfs2_iomap_ops);
-               current->backing_dev_info = NULL;
+               buffered = gfs2_file_buffered_write(iocb, from);
                if (unlikely(buffered <= 0)) {
                        if (!ret)
                                ret = buffered;
@@ -951,9 +961,7 @@ static ssize_t gfs2_file_write_iter(struct kiocb *iocb, 
struct iov_iter *from)
                if (!ret || ret2 > 0)
                        ret += ret2;
        } else {
-               current->backing_dev_info = inode_to_bdi(inode);
-               ret = iomap_file_buffered_write(iocb, from, &gfs2_iomap_ops);
-               current->backing_dev_info = NULL;
+               ret = gfs2_file_buffered_write(iocb, from);
                if (likely(ret > 0)) {
                        iocb->ki_pos += ret;
                        ret = generic_write_sync(iocb, ret);
-- 
2.31.1

Reply via email to