Commit e09caaf9 authored by Qu Wenruo's avatar Qu Wenruo Committed by David Sterba
Browse files

btrfs: introduce helper to handle page status update in end_bio_extent_readpage()



Introduce a new helper to handle update page status in
end_bio_extent_readpage(). This will be later used for subpage support
where the page status update can be more complex than now.

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 94e8c95c
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -2842,6 +2842,17 @@ static void endio_readpage_release_extent(struct processed_extent *processed,
	processed->uptodate = uptodate;
}

static void endio_readpage_update_page_status(struct page *page, bool uptodate)
{
	if (uptodate) {
		SetPageUptodate(page);
	} else {
		ClearPageUptodate(page);
		SetPageError(page);
	}
	unlock_page(page);
}

/*
 * after a readpage IO is done, we need to:
 * clear the uptodate bits on error
@@ -2964,14 +2975,11 @@ static void end_bio_extent_readpage(struct bio *bio)
			off = offset_in_page(i_size);
			if (page->index == end_index && off)
				zero_user_segment(page, off, PAGE_SIZE);
			SetPageUptodate(page);
		} else {
			ClearPageUptodate(page);
			SetPageError(page);
		}
		unlock_page(page);
		offset += len;

		/* Update page status and unlock */
		endio_readpage_update_page_status(page, uptodate);
		endio_readpage_release_extent(&processed, BTRFS_I(inode),
					      start, end, uptodate);
	}