Commit 4a3dc938 authored by Qu Wenruo's avatar Qu Wenruo Committed by David Sterba

btrfs: update num_extent_pages to support subpage sized extent buffer

For subpage sized extent buffer, we have ensured no extent buffer will
cross page boundary, thus we would only need one page for any extent
buffer.

Update function num_extent_pages to handle such case.  Now
num_extent_pages() returns 1 for subpage sized extent buffer.
Reviewed-by: default avatarNikolay Borisov <nborisov@suse.com>
Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 1aaac38c
...@@ -203,8 +203,14 @@ void btrfs_readahead_node_child(struct extent_buffer *node, int slot); ...@@ -203,8 +203,14 @@ void btrfs_readahead_node_child(struct extent_buffer *node, int slot);
static inline int num_extent_pages(const struct extent_buffer *eb) static inline int num_extent_pages(const struct extent_buffer *eb)
{ {
return (round_up(eb->start + eb->len, PAGE_SIZE) >> PAGE_SHIFT) - /*
(eb->start >> PAGE_SHIFT); * For sectorsize == PAGE_SIZE case, since nodesize is always aligned to
* sectorsize, it's just eb->len >> PAGE_SHIFT.
*
* For sectorsize < PAGE_SIZE case, we could have nodesize < PAGE_SIZE,
* thus have to ensure we get at least one page.
*/
return (eb->len >> PAGE_SHIFT) ?: 1;
} }
static inline int extent_buffer_uptodate(const struct extent_buffer *eb) static inline int extent_buffer_uptodate(const struct extent_buffer *eb)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment