summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNamjae Jeon <namjae.jeon@samsung.com>2014-05-22 10:54:41 +1000
committerStephen Rothwell <sfr@canb.auug.org.au>2014-05-22 20:13:07 +1000
commitd91ead9af501779ae7c248dfc53cb15d447c65db (patch)
tree8f4f569bb19396ccb18feb6b752ffc56b0b7c735
parentde0b403eb36c064d49b1efc47fe78ea229cfd151 (diff)
fat: fallback to buffered write in case of fallocated region on direct IO
For normal cases of direct IO write, trying to seek to location greater than file size, makes it fall back to buffered write to fill that region. Similarly, in case for write in Fallocated region, make it fall to buffered write. Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com> Signed-off-by: Amit Sahrawat <a.sahrawat@samsung.com> Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r--fs/fat/inode.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index e616fa70db57..57f1ce4c2851 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -292,6 +292,13 @@ static ssize_t fat_direct_IO(int rw, struct kiocb *iocb,
loff_t size = offset + count;
if (MSDOS_I(inode)->mmu_private < size)
return 0;
+
+ /*
+ * In case of writing in fallocated region, return 0 and
+ * fallback to buffered write.
+ */
+ if (MSDOS_I(inode)->i_disksize > MSDOS_I(inode)->mmu_private)
+ return 0;
}
/*