btrfs: raid56: make alloc_rbio_essential_pages() subpage compatible
The non-compatible part is only the bitmap iteration part, now the bitmap size is extended to rbio::stripe_nsectors, not the old rbio::stripe_npages. Since we're here, also slightly improve the function by: - Rename @i to @stripe - Rename @bit to @sectornr - Move @page and @index into the inner loop Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
d4e28d9b5f
commit
3907ce293d
@ -2415,14 +2415,16 @@ void raid56_add_scrub_pages(struct btrfs_raid_bio *rbio, struct page *page,
|
||||
*/
|
||||
static int alloc_rbio_essential_pages(struct btrfs_raid_bio *rbio)
|
||||
{
|
||||
int i;
|
||||
int bit;
|
||||
int index;
|
||||
struct page *page;
|
||||
const u32 sectorsize = rbio->bioc->fs_info->sectorsize;
|
||||
int stripe;
|
||||
int sectornr;
|
||||
|
||||
for_each_set_bit(sectornr, rbio->dbitmap, rbio->stripe_nsectors) {
|
||||
for (stripe = 0; stripe < rbio->real_stripes; stripe++) {
|
||||
struct page *page;
|
||||
int index = (stripe * rbio->stripe_nsectors + sectornr) *
|
||||
sectorsize >> PAGE_SHIFT;
|
||||
|
||||
for_each_set_bit(bit, rbio->dbitmap, rbio->stripe_npages) {
|
||||
for (i = 0; i < rbio->real_stripes; i++) {
|
||||
index = i * rbio->stripe_npages + bit;
|
||||
if (rbio->stripe_pages[index])
|
||||
continue;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user