Skip to content

Commit

Permalink
btrfs: Refactor loop in btrfs_release_extent_buffer_page
Browse files Browse the repository at this point in the history
The purpose of the function is to free all the pages comprising an
extent buffer. This can be achieved with a simple for loop rather than
the slightly more involved 'do {} while' construct. So rewrite the
loop using a 'for' construct. Additionally we can never have an
extent_buffer that has 0 pages so remove the check for index == 0. No
functional changes.

The reversed order used to have a meaning in the past where the first
page served as a blocking point for several callers. See eg
4f2de97 ("Btrfs: set page->private to the eb").

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
  • Loading branch information
Nikolay Borisov authored and David Sterba committed Aug 6, 2018
1 parent b16d011 commit d64766f
Showing 1 changed file with 6 additions and 9 deletions.
15 changes: 6 additions & 9 deletions fs/btrfs/extent_io.c
Original file line number Diff line number Diff line change
Expand Up @@ -4647,19 +4647,16 @@ int extent_buffer_under_io(struct extent_buffer *eb)
*/
static void btrfs_release_extent_buffer_page(struct extent_buffer *eb)
{
int index;
struct page *page;
int i;
int num_pages;
int mapped = !test_bit(EXTENT_BUFFER_DUMMY, &eb->bflags);

BUG_ON(extent_buffer_under_io(eb));

index = num_extent_pages(eb);
if (index == 0)
return;
num_pages = num_extent_pages(eb);
for (i = 0; i < num_pages; i++) {
struct page *page = eb->pages[i];

do {
index--;
page = eb->pages[index];
if (!page)
continue;
if (mapped)
Expand Down Expand Up @@ -4691,7 +4688,7 @@ static void btrfs_release_extent_buffer_page(struct extent_buffer *eb)

/* One for when we allocated the page */
put_page(page);
} while (index != 0);
}
}

/*
Expand Down

0 comments on commit d64766f

Please sign in to comment.