diff options
| author | Jan Kara <jack@suse.cz> | 2010-03-01 08:02:37 -0500 |
|---|---|---|
| committer | Jan Kara <jack@suse.cz> | 2010-03-04 18:20:27 -0500 |
| commit | 7eb4969e04060dcf3fbd46af9c21b1059b853068 (patch) | |
| tree | ac093841df6abbe2d517af6656b149ad42536648 | |
| parent | ab94c39b6fa076d4f6d2903dcc54cda35d938776 (diff) | |
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>
| -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: | |||
| 1785 | handle = ext3_journal_start(inode, 2); | 1785 | handle = ext3_journal_start(inode, 2); |
| 1786 | if (IS_ERR(handle)) { | 1786 | if (IS_ERR(handle)) { |
| 1787 | /* This is really bad luck. We've written the data | 1787 | /* This is really bad luck. We've written the data |
| 1788 | * but cannot extend i_size. Bail out and pretend | 1788 | * but cannot extend i_size. Truncate allocated blocks |
| 1789 | * the write failed... */ | 1789 | * and pretend the write failed... */ |
| 1790 | ext3_truncate(inode); | ||
| 1790 | ret = PTR_ERR(handle); | 1791 | ret = PTR_ERR(handle); |
| 1791 | goto out; | 1792 | goto out; |
| 1792 | } | 1793 | } |
