Commit 83f1b680 authored by Qu Wenruo's avatar Qu Wenruo Committed by David Sterba

btrfs: remove unnecessary @nr_written parameters

We use @nr_written to record how many pages have been started by
btrfs_run_delalloc_range().

Currently there are only two cases that would populate @nr_written:

- Inline extent creation
- Compressed write

But both cases will also set @page_started to one.

In fact, in writepage_delalloc() we have the following code, showing
that @nr_written is really only utilized for above two cases:

	/* did the fill delalloc function already unlock and start
	 * the IO?
	 */
	if (page_started) {
		/*
		 * we've unlocked the page, so we can't update
		 * the mapping's writeback index, just update
		 * nr_to_write.
		 */
		wbc->nr_to_write -= nr_written;
		return 1;
	}

But for such cases, writepage_delalloc() will return 1, and exit
__extent_writepage() without going through __extent_writepage_io().

Thus this means, inside __extent_writepage_io(), we always get
@nr_written as 0.

So this patch is going to remove the unnecessary parameter from the
following functions:

- writepage_delalloc()

  As @nr_written passed in is always the initial value 0.

  Although inside that function, we still need a local @nr_written
  to update wbc->nr_to_write.

- __extent_writepage_io()

  As explained above, @nr_written passed in can only be 0.

  This also means we can remove one update_nr_written() call.
Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 9270501c
...@@ -3785,12 +3785,13 @@ static void update_nr_written(struct writeback_control *wbc, ...@@ -3785,12 +3785,13 @@ static void update_nr_written(struct writeback_control *wbc,
* This returns < 0 if there were errors (page still locked) * This returns < 0 if there were errors (page still locked)
*/ */
static noinline_for_stack int writepage_delalloc(struct btrfs_inode *inode, static noinline_for_stack int writepage_delalloc(struct btrfs_inode *inode,
struct page *page, struct writeback_control *wbc, struct page *page, struct writeback_control *wbc)
unsigned long *nr_written)
{ {
const u64 page_end = page_offset(page) + PAGE_SIZE - 1; const u64 page_end = page_offset(page) + PAGE_SIZE - 1;
u64 delalloc_start = page_offset(page); u64 delalloc_start = page_offset(page);
u64 delalloc_to_write = 0; u64 delalloc_to_write = 0;
/* How many pages are started by btrfs_run_delalloc_range() */
unsigned long nr_written = 0;
int ret; int ret;
int page_started = 0; int page_started = 0;
...@@ -3806,7 +3807,7 @@ static noinline_for_stack int writepage_delalloc(struct btrfs_inode *inode, ...@@ -3806,7 +3807,7 @@ static noinline_for_stack int writepage_delalloc(struct btrfs_inode *inode,
continue; continue;
} }
ret = btrfs_run_delalloc_range(inode, page, delalloc_start, ret = btrfs_run_delalloc_range(inode, page, delalloc_start,
delalloc_end, &page_started, nr_written, wbc); delalloc_end, &page_started, &nr_written, wbc);
if (ret) { if (ret) {
btrfs_page_set_error(inode->root->fs_info, page, btrfs_page_set_error(inode->root->fs_info, page,
page_offset(page), PAGE_SIZE); page_offset(page), PAGE_SIZE);
...@@ -3829,16 +3830,13 @@ static noinline_for_stack int writepage_delalloc(struct btrfs_inode *inode, ...@@ -3829,16 +3830,13 @@ static noinline_for_stack int writepage_delalloc(struct btrfs_inode *inode,
thresh); thresh);
} }
/* did the fill delalloc function already unlock and start /* Did btrfs_run_dealloc_range() already unlock and start the IO? */
* the IO?
*/
if (page_started) { if (page_started) {
/* /*
* we've unlocked the page, so we can't update * We've unlocked the page, so we can't update the mapping's
* the mapping's writeback index, just update * writeback index, just update nr_to_write.
* nr_to_write.
*/ */
wbc->nr_to_write -= *nr_written; wbc->nr_to_write -= nr_written;
return 1; return 1;
} }
...@@ -3910,7 +3908,6 @@ static noinline_for_stack int __extent_writepage_io(struct btrfs_inode *inode, ...@@ -3910,7 +3908,6 @@ static noinline_for_stack int __extent_writepage_io(struct btrfs_inode *inode,
struct writeback_control *wbc, struct writeback_control *wbc,
struct extent_page_data *epd, struct extent_page_data *epd,
loff_t i_size, loff_t i_size,
unsigned long nr_written,
int *nr_ret) int *nr_ret)
{ {
struct btrfs_fs_info *fs_info = inode->root->fs_info; struct btrfs_fs_info *fs_info = inode->root->fs_info;
...@@ -3929,7 +3926,6 @@ static noinline_for_stack int __extent_writepage_io(struct btrfs_inode *inode, ...@@ -3929,7 +3926,6 @@ static noinline_for_stack int __extent_writepage_io(struct btrfs_inode *inode,
if (ret) { if (ret) {
/* Fixup worker will requeue */ /* Fixup worker will requeue */
redirty_page_for_writepage(wbc, page); redirty_page_for_writepage(wbc, page);
update_nr_written(wbc, nr_written);
unlock_page(page); unlock_page(page);
return 1; return 1;
} }
...@@ -3938,7 +3934,7 @@ static noinline_for_stack int __extent_writepage_io(struct btrfs_inode *inode, ...@@ -3938,7 +3934,7 @@ static noinline_for_stack int __extent_writepage_io(struct btrfs_inode *inode,
* we don't want to touch the inode after unlocking the page, * we don't want to touch the inode after unlocking the page,
* so we update the mapping writeback index now * so we update the mapping writeback index now
*/ */
update_nr_written(wbc, nr_written + 1); update_nr_written(wbc, 1);
while (cur <= end) { while (cur <= end) {
u64 disk_bytenr; u64 disk_bytenr;
...@@ -4076,7 +4072,6 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc, ...@@ -4076,7 +4072,6 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
size_t pg_offset; size_t pg_offset;
loff_t i_size = i_size_read(inode); loff_t i_size = i_size_read(inode);
unsigned long end_index = i_size >> PAGE_SHIFT; unsigned long end_index = i_size >> PAGE_SHIFT;
unsigned long nr_written = 0;
trace___extent_writepage(page, inode, wbc); trace___extent_writepage(page, inode, wbc);
...@@ -4105,7 +4100,7 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc, ...@@ -4105,7 +4100,7 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
} }
if (!epd->extent_locked) { if (!epd->extent_locked) {
ret = writepage_delalloc(BTRFS_I(inode), page, wbc, &nr_written); ret = writepage_delalloc(BTRFS_I(inode), page, wbc);
if (ret == 1) if (ret == 1)
return 0; return 0;
if (ret) if (ret)
...@@ -4113,7 +4108,7 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc, ...@@ -4113,7 +4108,7 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
} }
ret = __extent_writepage_io(BTRFS_I(inode), page, wbc, epd, i_size, ret = __extent_writepage_io(BTRFS_I(inode), page, wbc, epd, i_size,
nr_written, &nr); &nr);
if (ret == 1) if (ret == 1)
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment