Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d64766fd authored by Nikolay Borisov's avatar Nikolay Borisov Committed by David Sterba
Browse files

btrfs: Refactor loop in btrfs_release_extent_buffer_page



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
4f2de97a ("Btrfs: set page->private to the eb").

Signed-off-by: default avatarNikolay Borisov <nborisov@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent b16d011e
Loading
Loading
Loading
Loading
+6 −9
Original line number Diff line number Diff line
@@ -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)
@@ -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);
	}
}

/*