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

btrfs: open code extent_read_full_page to its sole caller



This makes reading the code a tad easier by decreasing the level of
indirection by one.

Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
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 fd513000
Loading
Loading
Loading
Loading
+5 −19
Original line number Diff line number Diff line
@@ -3141,7 +3141,7 @@ __get_extent_map(struct inode *inode, struct page *page, size_t pg_offset,
 * XXX JDM: This needs looking at to ensure proper page locking
 * return 0 on success, otherwise return error
 */
static int __do_readpage(struct page *page, struct extent_map **em_cached,
int btrfs_do_readpage(struct page *page, struct extent_map **em_cached,
		      struct bio **bio, unsigned long *bio_flags,
		      unsigned int read_flags, u64 *prev_em_start)
{
@@ -3358,26 +3358,12 @@ static inline void contiguous_readpages(struct page *pages[], int nr_pages,
	btrfs_lock_and_flush_ordered_range(inode, start, end, NULL);

	for (index = 0; index < nr_pages; index++) {
		__do_readpage(pages[index], em_cached, bio, bio_flags,
		btrfs_do_readpage(pages[index], em_cached, bio, bio_flags,
				  REQ_RAHEAD, prev_em_start);
		put_page(pages[index]);
	}
}

int extent_read_full_page(struct page *page, struct bio **bio,
			  unsigned long *bio_flags)
{
	struct btrfs_inode *inode = BTRFS_I(page->mapping->host);
	u64 start = page_offset(page);
	u64 end = start + PAGE_SIZE - 1;
	int ret;

	btrfs_lock_and_flush_ordered_range(inode, start, end, NULL);

	ret = __do_readpage(page, NULL, bio, bio_flags, 0, NULL);
	return ret;
}

static void update_nr_written(struct writeback_control *wbc,
			      unsigned long nr_written)
{
+3 −2
Original line number Diff line number Diff line
@@ -195,8 +195,9 @@ int try_release_extent_buffer(struct page *page);

int __must_check submit_one_bio(struct bio *bio, int mirror_num,
				unsigned long bio_flags);
int extent_read_full_page(struct page *page, struct bio **bio,
			  unsigned long *bio_flags);
int btrfs_do_readpage(struct page *page, struct extent_map **em_cached,
		      struct bio **bio, unsigned long *bio_flags,
		      unsigned int read_flags, u64 *prev_em_start);
int extent_write_full_page(struct page *page, struct writeback_control *wbc);
int extent_write_locked_range(struct inode *inode, u64 start, u64 end,
			      int mode);
+7 −2
Original line number Diff line number Diff line
@@ -8040,11 +8040,16 @@ static int btrfs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,

int btrfs_readpage(struct file *file, struct page *page)
{
	struct bio *bio = NULL;
	struct btrfs_inode *inode = BTRFS_I(page->mapping->host);
	u64 start = page_offset(page);
	u64 end = start + PAGE_SIZE - 1;
	unsigned long bio_flags = 0;
	struct bio *bio = NULL;
	int ret;

	ret = extent_read_full_page(page, &bio, &bio_flags);
	btrfs_lock_and_flush_ordered_range(inode, start, end, NULL);

	ret = btrfs_do_readpage(page, NULL, &bio, &bio_flags, 0, NULL);
	if (bio)
		ret = submit_one_bio(bio, 0, bio_flags);
	return ret;