mirror of
https://github.com/torvalds/linux.git
synced 2024-11-16 00:52:01 +00:00
btrfs: don't check for uptodate pages in read_extent_buffer_pages
The only place that reads in pages and thus marks them uptodate for the btree inode is read_extent_buffer_pages. Which means that either pages are already uptodate from an old buffer when creating a new one in alloc_extent_buffer, or they will be updated by ca call to read_extent_buffer_pages. This means the checks for uptodate pages in read_extent_buffer_pages and read_extent_buffer_subpage are superfluous and can be removed. Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
011134f444
commit
f3d315eb93
@ -4136,10 +4136,7 @@ static int read_extent_buffer_subpage(struct extent_buffer *eb, int wait,
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags) ||
|
||||
PageUptodate(page) ||
|
||||
btrfs_subpage_test_uptodate(fs_info, page, eb->start, eb->len)) {
|
||||
set_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags);
|
||||
if (test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags)) {
|
||||
unlock_extent(io_tree, eb->start, eb->start + eb->len - 1,
|
||||
&cached_state);
|
||||
return 0;
|
||||
@ -4166,7 +4163,6 @@ int read_extent_buffer_pages(struct extent_buffer *eb, int wait, int mirror_num,
|
||||
int i;
|
||||
struct page *page;
|
||||
int locked_pages = 0;
|
||||
int all_uptodate = 1;
|
||||
int num_pages;
|
||||
|
||||
if (test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags))
|
||||
@ -4201,21 +4197,6 @@ int read_extent_buffer_pages(struct extent_buffer *eb, int wait, int mirror_num,
|
||||
}
|
||||
locked_pages++;
|
||||
}
|
||||
/*
|
||||
* We need to firstly lock all pages to make sure that
|
||||
* the uptodate bit of our pages won't be affected by
|
||||
* clear_extent_buffer_uptodate().
|
||||
*/
|
||||
for (i = 0; i < num_pages; i++) {
|
||||
page = eb->pages[i];
|
||||
if (!PageUptodate(page))
|
||||
all_uptodate = 0;
|
||||
}
|
||||
|
||||
if (all_uptodate) {
|
||||
set_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags);
|
||||
goto unlock_exit;
|
||||
}
|
||||
|
||||
__read_extent_buffer_pages(eb, mirror_num, check);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user