From: OGAWA Hirofumi If the DIO write on FAT is expanding the size, it will be fail by -EINVAL, because FAT can't handle it now. This patch fallback it to the normal buffered-write and would return success. Signed-off-by: OGAWA Hirofumi Signed-off-by: Andrew Morton --- fs/fat/inode.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff -puN fs/fat/inode.c~fat-dio-write-fallback-to-normal-buffered fs/fat/inode.c --- a/fs/fat/inode.c~fat-dio-write-fallback-to-normal-buffered +++ a/fs/fat/inode.c @@ -173,10 +173,12 @@ static ssize_t fat_direct_IO(int rw, str * * But we must fill the remaining area or hole by nul for * updating ->mmu_private. + * + * Return 0, and fallback to normal buffered write. */ loff_t size = offset + iov_length(iov, nr_segs); if (MSDOS_I(inode)->mmu_private < size) - return -EINVAL; + return 0; } /* _