diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 594fb15fba9b..c6b6819d2f53 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -417,12 +417,7 @@ static int fuse_flush(struct file *file, fl_owner_t id) fuse_sync_writes(inode); inode_unlock(inode); - 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; + err = filemap_check_errors(file->f_mapping); if (err) return err; @@ -477,12 +472,7 @@ int fuse_fsync_common(struct file *file, loff_t start, loff_t end, * 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; + err = filemap_check_errors(file->f_mapping); if (err) goto out;