Patch "fuse: fsync() did not return IO errors" has been added to the 4.6-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
fuse: fsync() did not return IO errors
to the 4.6-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
fuse-fsync-did-not-return-io-errors.patch
and it can be found in the queue-4.6 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
ac7f052b9e1534c8248f814b6f0068ad8d4a06d2Mon Sep 17 00:00:00 2001
From: Alexey Kuznetsov <[email protected]>
Date: Tue, 19 Jul 2016 12:48:01 -0700
Subject: fuse: fsync() did not return IO errors
From: Alexey Kuznetsov <[email protected]>
commit ac7f052b9e1534c8248f814b6f0068ad8d4a06d2 upstream.
Due to implementation of fuse writeback filemap_write_and_wait_range() does not catch errors. We have to do this directly after fuse_sync_writes()
--- fs/fuse/file.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
fs/fuse/file.c +15 -0
@@ -462,6 +462,21 @@ int fuse_fsync_common(struct file *file, goto out;fuse_sync_writes (inode); + +/* +* Due to implementation of fuse writeback +* filemap_write_and_wait_range() does not catch errors. +* We have to do this directly after fuse_sync_writes() +*/ +if (test_bit (AS_ENOSPC , &file->f_mapping->flags) && +test_and_clear_bit (AS_ENOSPC , &file->f_mapping->flags)) + err = -ENOSPC ; +if (test_bit (AS_EIO , &file->f_mapping->flags) && +test_and_clear_bit (AS_EIO , &file->f_mapping->flags)) + err = -EIO ; +if (err) + goto out; + err =sync_inode_metadata (inode,1 );if (err) goto out;
Patches currently in stable-queue which might be from [email protected] are
queue-4.6/fuse-fsync-did-not-return-io-errors.patch