Message ID | 20200908075230.86856-4-wqu@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs: add read-only support for subpage sector size | expand |
On 8.09.20 г. 10:52 ч., Qu Wenruo wrote: > There is some ancient code from the old days where we handle the > disk_key read manually when the disk key is in one page.> > But that's totally unnecessary, as we have read_extent_buffer() to > handle everything. I'd rephrase this to something like: "generic_bin_search distinguishes between reading a key which doesn't cross a page and one which does. However this distinction is not necessary since read_extent_buffer handles both cases transparently. Just use read_extent_buffer to streamline the code" > > Signed-off-by: Qu Wenruo <wqu@suse.com> > --- > fs/btrfs/ctree.c | 13 ++----------- > 1 file changed, 2 insertions(+), 11 deletions(-) > > diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c > index cd1cd673bc0b..e204e1320745 100644 > --- a/fs/btrfs/ctree.c > +++ b/fs/btrfs/ctree.c > @@ -1697,7 +1697,6 @@ static noinline int generic_bin_search(struct extent_buffer *eb, > } > > while (low < high) { > - unsigned long oip; > unsigned long offset; > struct btrfs_disk_key *tmp; > struct btrfs_disk_key unaligned; > @@ -1705,17 +1704,9 @@ static noinline int generic_bin_search(struct extent_buffer *eb, > > mid = (low + high) / 2; > offset = p + mid * item_size; > - oip = offset_in_page(offset); > > - if (oip + key_size <= PAGE_SIZE) { > - const unsigned long idx = offset >> PAGE_SHIFT; > - char *kaddr = page_address(eb->pages[idx]); > - > - tmp = (struct btrfs_disk_key *)(kaddr + oip); > - } else { > - read_extent_buffer(eb, &unaligned, offset, key_size); > - tmp = &unaligned; > - } > + read_extent_buffer(eb, &unaligned, offset, key_size); > + tmp = &unaligned; > > ret = comp_keys(tmp, key); > >
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index cd1cd673bc0b..e204e1320745 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c @@ -1697,7 +1697,6 @@ static noinline int generic_bin_search(struct extent_buffer *eb, } while (low < high) { - unsigned long oip; unsigned long offset; struct btrfs_disk_key *tmp; struct btrfs_disk_key unaligned; @@ -1705,17 +1704,9 @@ static noinline int generic_bin_search(struct extent_buffer *eb, mid = (low + high) / 2; offset = p + mid * item_size; - oip = offset_in_page(offset); - if (oip + key_size <= PAGE_SIZE) { - const unsigned long idx = offset >> PAGE_SHIFT; - char *kaddr = page_address(eb->pages[idx]); - - tmp = (struct btrfs_disk_key *)(kaddr + oip); - } else { - read_extent_buffer(eb, &unaligned, offset, key_size); - tmp = &unaligned; - } + read_extent_buffer(eb, &unaligned, offset, key_size); + tmp = &unaligned; ret = comp_keys(tmp, key);
There is some ancient code from the old days where we handle the disk_key read manually when the disk key is in one page. But that's totally unnecessary, as we have read_extent_buffer() to handle everything. Signed-off-by: Qu Wenruo <wqu@suse.com> --- fs/btrfs/ctree.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-)