Message ID | 20180913120507.18197-4-nborisov@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Misc refactoring of check_file_extent | expand |
On 2018/9/13 下午8:05, Nikolay Borisov wrote: > Make the checks in check_file_extent a bit more explicit. First we check > for unknown type and fail accordingly. Then we check for inline extent > and handle it in the newly introduced check_file_extent_inline. Finally > if none of the above checks triggered then we must have a regular or > prealloc extents. > > Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: Qu Wenruo <wqu@suse.com> Thanks, Qu > --- > check/mode-lowmem.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/check/mode-lowmem.c b/check/mode-lowmem.c > index 3a6fbb33c858..aa946a1307de 100644 > --- a/check/mode-lowmem.c > +++ b/check/mode-lowmem.c > @@ -1915,21 +1915,23 @@ static int check_file_extent(struct btrfs_root *root, struct btrfs_path *path, > > btrfs_item_key_to_cpu(node, &fkey, slot); > fi = btrfs_item_ptr(node, slot, struct btrfs_file_extent_item); > - > - /* Check inline extent */ > extent_type = btrfs_file_extent_type(node, fi); > - if (extent_type == BTRFS_FILE_EXTENT_INLINE) > - return check_file_extent_inline(root, path, size, end); > > /* Check extent type */ > if (extent_type != BTRFS_FILE_EXTENT_REG && > - extent_type != BTRFS_FILE_EXTENT_PREALLOC) { > + extent_type != BTRFS_FILE_EXTENT_PREALLOC && > + extent_type != BTRFS_FILE_EXTENT_INLINE) { > err |= FILE_EXTENT_ERROR; > error("root %llu EXTENT_DATA[%llu %llu] type bad", > root->objectid, fkey.objectid, fkey.offset); > return err; > } > > + /* Check inline extent */ > + if (extent_type == BTRFS_FILE_EXTENT_INLINE) > + return check_file_extent_inline(root, path, size, end); > + > + > /* Check REG_EXTENT/PREALLOC_EXTENT */ > disk_bytenr = btrfs_file_extent_disk_bytenr(node, fi); > disk_num_bytes = btrfs_file_extent_disk_num_bytes(node, fi); >
diff --git a/check/mode-lowmem.c b/check/mode-lowmem.c index 3a6fbb33c858..aa946a1307de 100644 --- a/check/mode-lowmem.c +++ b/check/mode-lowmem.c @@ -1915,21 +1915,23 @@ static int check_file_extent(struct btrfs_root *root, struct btrfs_path *path, btrfs_item_key_to_cpu(node, &fkey, slot); fi = btrfs_item_ptr(node, slot, struct btrfs_file_extent_item); - - /* Check inline extent */ extent_type = btrfs_file_extent_type(node, fi); - if (extent_type == BTRFS_FILE_EXTENT_INLINE) - return check_file_extent_inline(root, path, size, end); /* Check extent type */ if (extent_type != BTRFS_FILE_EXTENT_REG && - extent_type != BTRFS_FILE_EXTENT_PREALLOC) { + extent_type != BTRFS_FILE_EXTENT_PREALLOC && + extent_type != BTRFS_FILE_EXTENT_INLINE) { err |= FILE_EXTENT_ERROR; error("root %llu EXTENT_DATA[%llu %llu] type bad", root->objectid, fkey.objectid, fkey.offset); return err; } + /* Check inline extent */ + if (extent_type == BTRFS_FILE_EXTENT_INLINE) + return check_file_extent_inline(root, path, size, end); + + /* Check REG_EXTENT/PREALLOC_EXTENT */ disk_bytenr = btrfs_file_extent_disk_bytenr(node, fi); disk_num_bytes = btrfs_file_extent_disk_num_bytes(node, fi);
Make the checks in check_file_extent a bit more explicit. First we check for unknown type and fail accordingly. Then we check for inline extent and handle it in the newly introduced check_file_extent_inline. Finally if none of the above checks triggered then we must have a regular or prealloc extents. Signed-off-by: Nikolay Borisov <nborisov@suse.com> --- check/mode-lowmem.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)