Patchwork [2/2] ext3: Check return value of blkdev_issue_flush()

login
register
mail settings
Submitter Jan Kara
Date July 9, 2012, 9:45 p.m.
Message ID <1341870307-11803-2-git-send-email-jack@suse.cz>
Download mbox | patch
Permalink /patch/169968/
State Superseded
Headers show

Comments

Jan Kara - July 9, 2012, 9:45 p.m.
blkdev_issue_flush() can fail. Make sure the error gets properly propagated.

Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/ext3/fsync.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

 I have queued this patch in my tree and plan to send it to Linus in the
next merge window.

Patch

diff --git a/fs/ext3/fsync.c b/fs/ext3/fsync.c
index d4dff27..b31dbd4 100644
--- a/fs/ext3/fsync.c
+++ b/fs/ext3/fsync.c
@@ -92,8 +92,13 @@  int ext3_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
 	 * disk caches manually so that data really is on persistent
 	 * storage
 	 */
-	if (needs_barrier)
-		blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL);
+	if (needs_barrier) {
+		int err;
+
+		err = blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL);
+		if (!ret)
+			ret = err;
+	}
 out:
 	trace_ext3_sync_file_exit(inode, ret);
 	return ret;