diff options
author | Jan Kara <jack@suse.cz> | 2010-03-01 14:02:37 +0100 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2010-03-05 00:20:27 +0100 |
commit | 7eb4969e04060dcf3fbd46af9c21b1059b853068 (patch) | |
tree | ac093841df6abbe2d517af6656b149ad42536648 /fs/ext3/inode.c | |
parent | quota: Properly invalidate caches even for filesystems with blocksize < pagesize (diff) | |
download | linux-7eb4969e04060dcf3fbd46af9c21b1059b853068.tar.xz linux-7eb4969e04060dcf3fbd46af9c21b1059b853068.zip |
ext3: Truncate allocated blocks if direct IO write fails to update i_size
We have to truncate blocks allocated to file during direct IO when we
fail to update i_size properly.
Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/ext3/inode.c')
-rw-r--r-- | fs/ext3/inode.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c index 44b53386ab8b..c0ff9d6ffde6 100644 --- a/fs/ext3/inode.c +++ b/fs/ext3/inode.c @@ -1785,8 +1785,9 @@ retry: handle = ext3_journal_start(inode, 2); if (IS_ERR(handle)) { /* This is really bad luck. We've written the data - * but cannot extend i_size. Bail out and pretend - * the write failed... */ + * but cannot extend i_size. Truncate allocated blocks + * and pretend the write failed... */ + ext3_truncate(inode); ret = PTR_ERR(handle); goto out; } |