Btrfs: btrfs_mark_extent_written uses the wrong slot
My test do: fallocate a big file and do write. The file is 512M, but
after file write is done btrfs-debug-tree shows:
item 6 key (257 EXTENT_DATA 0) itemoff 3516 itemsize 53
extent data disk byte 1103101952 nr 536870912
extent data offset 0 nr 399634432 ram 536870912
extent compression 0
Looks like a regression introducted by
6c7d54ac87
, where we set wrong slot.
Signed-off-by: Shaohua Li <shaohua.li@intel.com>
Acked-by: Yan Zheng <zheng.yan@oracle.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
23b5c50945
commit
3f6fae9559
|
@ -720,13 +720,15 @@ again:
|
||||||
inode->i_ino, orig_offset);
|
inode->i_ino, orig_offset);
|
||||||
BUG_ON(ret);
|
BUG_ON(ret);
|
||||||
}
|
}
|
||||||
|
if (del_nr == 0) {
|
||||||
fi = btrfs_item_ptr(leaf, path->slots[0],
|
fi = btrfs_item_ptr(leaf, path->slots[0],
|
||||||
struct btrfs_file_extent_item);
|
struct btrfs_file_extent_item);
|
||||||
if (del_nr == 0) {
|
|
||||||
btrfs_set_file_extent_type(leaf, fi,
|
btrfs_set_file_extent_type(leaf, fi,
|
||||||
BTRFS_FILE_EXTENT_REG);
|
BTRFS_FILE_EXTENT_REG);
|
||||||
btrfs_mark_buffer_dirty(leaf);
|
btrfs_mark_buffer_dirty(leaf);
|
||||||
} else {
|
} else {
|
||||||
|
fi = btrfs_item_ptr(leaf, del_slot - 1,
|
||||||
|
struct btrfs_file_extent_item);
|
||||||
btrfs_set_file_extent_type(leaf, fi,
|
btrfs_set_file_extent_type(leaf, fi,
|
||||||
BTRFS_FILE_EXTENT_REG);
|
BTRFS_FILE_EXTENT_REG);
|
||||||
btrfs_set_file_extent_num_bytes(leaf, fi,
|
btrfs_set_file_extent_num_bytes(leaf, fi,
|
||||||
|
|
Loading…
Reference in a new issue