|
@@ -57,10 +57,15 @@ static struct buffer_head *ext3_append(handle_t *handle,
|
|
|
|
|
|
*block = inode->i_size >> inode->i_sb->s_blocksize_bits;
|
|
|
|
|
|
- if ((bh = ext3_bread(handle, inode, *block, 1, err))) {
|
|
|
+ bh = ext3_bread(handle, inode, *block, 1, err);
|
|
|
+ if (bh) {
|
|
|
inode->i_size += inode->i_sb->s_blocksize;
|
|
|
EXT3_I(inode)->i_disksize = inode->i_size;
|
|
|
- ext3_journal_get_write_access(handle,bh);
|
|
|
+ *err = ext3_journal_get_write_access(handle, bh);
|
|
|
+ if (*err) {
|
|
|
+ brelse(bh);
|
|
|
+ bh = NULL;
|
|
|
+ }
|
|
|
}
|
|
|
return bh;
|
|
|
}
|