Shaohua Li
2010-Feb-11 07:43 UTC
[PATCH] btrfs: btrfs_mark_extent_written writes correctly 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 6c7d54ac87f338c479d9729e8392eca3f76e11e1, where we set wrong slot. Signed-off-by: Shaohua Li <shaohua.li@intel.com> diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 9d08096..6ed434a 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -720,13 +720,15 @@ again: inode->i_ino, orig_offset); BUG_ON(ret); } - fi = btrfs_item_ptr(leaf, path->slots[0], - struct btrfs_file_extent_item); if (del_nr == 0) { + fi = btrfs_item_ptr(leaf, path->slots[0], + struct btrfs_file_extent_item); btrfs_set_file_extent_type(leaf, fi, BTRFS_FILE_EXTENT_REG); btrfs_mark_buffer_dirty(leaf); } else { + fi = btrfs_item_ptr(leaf, del_slot - 1, + struct btrfs_file_extent_item); btrfs_set_file_extent_type(leaf, fi, BTRFS_FILE_EXTENT_REG); btrfs_set_file_extent_num_bytes(leaf, fi, -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Yan, Zheng
2010-Feb-11 07:50 UTC
Re: [PATCH] btrfs: btrfs_mark_extent_written writes correctly slot
On 02/11/2010 03:43 PM, Shaohua Li wrote:> 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 > 6c7d54ac87f338c479d9729e8392eca3f76e11e1, where we set wrong slot. > > Signed-off-by: Shaohua Li <shaohua.li@intel.com> > > diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c > index 9d08096..6ed434a 100644 > --- a/fs/btrfs/file.c > +++ b/fs/btrfs/file.c > @@ -720,13 +720,15 @@ again: > inode->i_ino, orig_offset); > BUG_ON(ret); > } > - fi = btrfs_item_ptr(leaf, path->slots[0], > - struct btrfs_file_extent_item); > if (del_nr == 0) { > + fi = btrfs_item_ptr(leaf, path->slots[0], > + struct btrfs_file_extent_item); > btrfs_set_file_extent_type(leaf, fi, > BTRFS_FILE_EXTENT_REG); > btrfs_mark_buffer_dirty(leaf); > } else { > + fi = btrfs_item_ptr(leaf, del_slot - 1, > + struct btrfs_file_extent_item); > btrfs_set_file_extent_type(leaf, fi, > BTRFS_FILE_EXTENT_REG); > btrfs_set_file_extent_num_bytes(leaf, fi,Acked-by: Yan Zheng <zheng.yan@oracle.com> -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html