aboutsummaryrefslogtreecommitdiff
path: root/fs/squashfs
diff options
context:
space:
mode:
authorGravatar Qu Wenruo <wqu@suse.com> 2020-02-13 14:11:04 +0800
committerGravatar David Sterba <dsterba@suse.com> 2020-05-25 11:25:16 +0200
commita37f232b7b65789cadc9834d389f6390de11b583 (patch)
tree4b36e9c656727c9a4f6511074400e85632047ff6 /fs/squashfs
parentbtrfs: add missing annotation for btrfs_tree_lock() (diff)
downloadlinux-a37f232b7b65789cadc9834d389f6390de11b583.tar.gz
linux-a37f232b7b65789cadc9834d389f6390de11b583.tar.bz2
linux-a37f232b7b65789cadc9834d389f6390de11b583.zip
btrfs: backref: introduce the skeleton of btrfs_backref_iter
Due to the complex nature of btrfs extent tree, when we want to iterate all backrefs of one extent, this involves quite a lot of work, like searching the EXTENT_ITEM/METADATA_ITEM, iteration through inline and keyed backrefs. Normally this would result in a complex code, something like: btrfs_search_slot() /* Ensure we are at EXTENT_ITEM/METADATA_ITEM */ while (1) { /* Loop for extent tree items */ while (ptr < end) { /* Loop for inlined items */ /* Real work here */ } next: ret = btrfs_next_item() /* Ensure we're still at keyed item for specified bytenr */ } The idea of btrfs_backref_iter is to avoid such complex and hard to read code structure, but something like the following: iter = btrfs_backref_iter_alloc(); ret = btrfs_backref_iter_start(iter, bytenr); if (ret < 0) goto out; for (; ; ret = btrfs_backref_iter_next(iter)) { /* Real work here */ } out: btrfs_backref_iter_free(iter); This patch is just the skeleton + btrfs_backref_iter_start() code. Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/squashfs')
0 files changed, 0 insertions, 0 deletions