summaryrefslogtreecommitdiffstats
path: root/fs/ocfs2
diff options
context:
space:
mode:
authorYounger Liu <younger.liucn@gmail.com>2014-02-10 23:25:44 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2014-02-11 01:01:42 +0100
commita987c7ca7fc9225a587b1dc59d7d4ad2d9e2e08e (patch)
tree8624277e806b28f2396fe6157b026f00a2089285 /fs/ocfs2
parentdrivers/edac/edac_mc_sysfs.c: poll timeout cannot be zero (diff)
downloadlinux-a987c7ca7fc9225a587b1dc59d7d4ad2d9e2e08e.tar.xz
linux-a987c7ca7fc9225a587b1dc59d7d4ad2d9e2e08e.zip
ocfs2: fix ocfs2_sync_file() if filesystem is readonly
If filesystem is readonly, there is no need to flush drive's caches or force any uncommitted transactions. [akpm@linux-foundation.org: return -EROFS, not 0] Signed-off-by: Younger Liu <younger.liucn@gmail.com> Cc: Joel Becker <jlbec@evilplan.org> Cc: Mark Fasheh <mfasheh@suse.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/ocfs2')
-rw-r--r--fs/ocfs2/file.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index d77d71ead8d1..fcd970636bbf 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -185,6 +185,9 @@ static int ocfs2_sync_file(struct file *file, loff_t start, loff_t end,
file->f_path.dentry->d_name.name,
(unsigned long long)datasync);
+ if (ocfs2_is_hard_readonly(osb) || ocfs2_is_soft_readonly(osb))
+ return -EROFS;
+
err = filemap_write_and_wait_range(inode->i_mapping, start, end);
if (err)
return err;