udf: Do not decrement i_blocks when freeing indirect extent block
Indirect extent block is not accounted in i_blocks during allocation thus we should not decrement i_blocks when we are freeing such block during truncation. Reported-by: Steve Nickel <snickel58@gmail.com> Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
bff943af6f
commit
17dc59ba41
1 changed files with 2 additions and 2 deletions
|
@ -248,7 +248,7 @@ void udf_truncate_extents(struct inode *inode)
|
||||||
/* We managed to free all extents in the
|
/* We managed to free all extents in the
|
||||||
* indirect extent - free it too */
|
* indirect extent - free it too */
|
||||||
BUG_ON(!epos.bh);
|
BUG_ON(!epos.bh);
|
||||||
udf_free_blocks(sb, inode, &epos.block,
|
udf_free_blocks(sb, NULL, &epos.block,
|
||||||
0, indirect_ext_len);
|
0, indirect_ext_len);
|
||||||
} else if (!epos.bh) {
|
} else if (!epos.bh) {
|
||||||
iinfo->i_lenAlloc = lenalloc;
|
iinfo->i_lenAlloc = lenalloc;
|
||||||
|
@ -275,7 +275,7 @@ void udf_truncate_extents(struct inode *inode)
|
||||||
|
|
||||||
if (indirect_ext_len) {
|
if (indirect_ext_len) {
|
||||||
BUG_ON(!epos.bh);
|
BUG_ON(!epos.bh);
|
||||||
udf_free_blocks(sb, inode, &epos.block, 0, indirect_ext_len);
|
udf_free_blocks(sb, NULL, &epos.block, 0, indirect_ext_len);
|
||||||
} else if (!epos.bh) {
|
} else if (!epos.bh) {
|
||||||
iinfo->i_lenAlloc = lenalloc;
|
iinfo->i_lenAlloc = lenalloc;
|
||||||
mark_inode_dirty(inode);
|
mark_inode_dirty(inode);
|
||||||
|
|
Loading…
Add table
Reference in a new issue