public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
From: David Sterba <dsterba@suse.cz>
To: Qu Wenruo <wqu@suse.com>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: [PATCH v2 1/3] btrfs: scrub: rename members related to scrub_block::pagev
Date: Fri, 11 Mar 2022 18:49:14 +0100	[thread overview]
Message-ID: <20220311174914.GE12643@twin.jikos.cz> (raw)
In-Reply-To: <b971391a31a3cee8f7c19d02dd2a48328c580d1b.1646983771.git.wqu@suse.com>

On Fri, Mar 11, 2022 at 03:34:18PM +0800, Qu Wenruo wrote:
> The following will be renamed in this patch:
> 
> - scrub_block::pagev -> sectorv

I think you can come up with a different naming scheme and not copy the
original, eg. something closer what we've been using elsewhere. Here the
'pagev' is a page vector, but 'sectors' is IMHO fine and also
understandable.

> 
> - scrub_block::page_count -> sector_count
> 
> - SCRUB_MAX_PAGES_PER_BLOCK -> SCRUB_MAX_SECTORS_PER_BLOCK
> 
> - page_num -> sector_num to iterate scrub_block::sectorv
> 
> For now scrub_page is not yet renamed, as the current changeset is
> already large enough.
> 
> The rename for scrub_page will come in a separate patch.
> 
> Signed-off-by: Qu Wenruo <wqu@suse.com>
> ---
>  fs/btrfs/scrub.c | 220 +++++++++++++++++++++++------------------------
>  1 file changed, 110 insertions(+), 110 deletions(-)
> 
> diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c
> index 11089568b287..fd67e1acdba6 100644
> --- a/fs/btrfs/scrub.c
> +++ b/fs/btrfs/scrub.c
> @@ -52,7 +52,7 @@ struct scrub_ctx;
>   * The following value times PAGE_SIZE needs to be large enough to match the
>   * largest node/leaf/sector size that shall be supported.
>   */
> -#define SCRUB_MAX_PAGES_PER_BLOCK	(BTRFS_MAX_METADATA_BLOCKSIZE / SZ_4K)
> +#define SCRUB_MAX_SECTORS_PER_BLOCK	(BTRFS_MAX_METADATA_BLOCKSIZE / SZ_4K)
>  
>  struct scrub_recover {
>  	refcount_t		refs;
> @@ -94,8 +94,8 @@ struct scrub_bio {
>  };
>  
>  struct scrub_block {
> -	struct scrub_page	*pagev[SCRUB_MAX_PAGES_PER_BLOCK];
> -	int			page_count;
> +	struct scrub_page	*sectorv[SCRUB_MAX_SECTORS_PER_BLOCK];
> +	int			sector_count;
>  	atomic_t		outstanding_pages;
>  	refcount_t		refs; /* free mem on transition to zero */
>  	struct scrub_ctx	*sctx;
> @@ -728,16 +728,16 @@ static void scrub_print_warning(const char *errstr, struct scrub_block *sblock)
>  	u8 ref_level = 0;
>  	int ret;
>  
> -	WARN_ON(sblock->page_count < 1);
> -	dev = sblock->pagev[0]->dev;
> +	WARN_ON(sblock->sector_count < 1);
> +	dev = sblock->sectorv[0]->dev;
>  	fs_info = sblock->sctx->fs_info;
>  
>  	path = btrfs_alloc_path();
>  	if (!path)
>  		return;
>  
> -	swarn.physical = sblock->pagev[0]->physical;
> -	swarn.logical = sblock->pagev[0]->logical;
> +	swarn.physical = sblock->sectorv[0]->physical;
> +	swarn.logical = sblock->sectorv[0]->logical;
>  	swarn.errstr = errstr;
>  	swarn.dev = NULL;
>  
> @@ -817,16 +817,16 @@ static int scrub_handle_errored_block(struct scrub_block *sblock_to_check)
>  	struct scrub_block *sblock_bad;
>  	int ret;
>  	int mirror_index;
> -	int page_num;
> +	int sector_num;
>  	int success;
>  	bool full_stripe_locked;
>  	unsigned int nofs_flag;
>  	static DEFINE_RATELIMIT_STATE(rs, DEFAULT_RATELIMIT_INTERVAL,
>  				      DEFAULT_RATELIMIT_BURST);
>  
> -	BUG_ON(sblock_to_check->page_count < 1);
> +	BUG_ON(sblock_to_check->sector_count < 1);
>  	fs_info = sctx->fs_info;
> -	if (sblock_to_check->pagev[0]->flags & BTRFS_EXTENT_FLAG_SUPER) {
> +	if (sblock_to_check->sectorv[0]->flags & BTRFS_EXTENT_FLAG_SUPER) {
>  		/*
>  		 * if we find an error in a super block, we just report it.
>  		 * They will get written with the next transaction commit
> @@ -837,13 +837,13 @@ static int scrub_handle_errored_block(struct scrub_block *sblock_to_check)
>  		spin_unlock(&sctx->stat_lock);
>  		return 0;
>  	}
> -	logical = sblock_to_check->pagev[0]->logical;
> -	BUG_ON(sblock_to_check->pagev[0]->mirror_num < 1);
> -	failed_mirror_index = sblock_to_check->pagev[0]->mirror_num - 1;
> -	is_metadata = !(sblock_to_check->pagev[0]->flags &
> +	logical = sblock_to_check->sectorv[0]->logical;
> +	BUG_ON(sblock_to_check->sectorv[0]->mirror_num < 1);
> +	failed_mirror_index = sblock_to_check->sectorv[0]->mirror_num - 1;
> +	is_metadata = !(sblock_to_check->sectorv[0]->flags &
>  			BTRFS_EXTENT_FLAG_DATA);
> -	have_csum = sblock_to_check->pagev[0]->have_csum;
> -	dev = sblock_to_check->pagev[0]->dev;
> +	have_csum = sblock_to_check->sectorv[0]->have_csum;
> +	dev = sblock_to_check->sectorv[0]->dev;
>  
>  	if (!sctx->is_dev_replace && btrfs_repair_one_zone(fs_info, logical))
>  		return 0;
> @@ -1011,25 +1011,25 @@ static int scrub_handle_errored_block(struct scrub_block *sblock_to_check)
>  			continue;
>  
>  		/* raid56's mirror can be more than BTRFS_MAX_MIRRORS */
> -		if (!scrub_is_page_on_raid56(sblock_bad->pagev[0])) {
> +		if (!scrub_is_page_on_raid56(sblock_bad->sectorv[0])) {
>  			if (mirror_index >= BTRFS_MAX_MIRRORS)
>  				break;
> -			if (!sblocks_for_recheck[mirror_index].page_count)
> +			if (!sblocks_for_recheck[mirror_index].sector_count)
>  				break;
>  
>  			sblock_other = sblocks_for_recheck + mirror_index;
>  		} else {
> -			struct scrub_recover *r = sblock_bad->pagev[0]->recover;
> +			struct scrub_recover *r = sblock_bad->sectorv[0]->recover;
>  			int max_allowed = r->bioc->num_stripes - r->bioc->num_tgtdevs;
>  
>  			if (mirror_index >= max_allowed)
>  				break;
> -			if (!sblocks_for_recheck[1].page_count)
> +			if (!sblocks_for_recheck[1].sector_count)
>  				break;
>  
>  			ASSERT(failed_mirror_index == 0);
>  			sblock_other = sblocks_for_recheck + 1;
> -			sblock_other->pagev[0]->mirror_num = 1 + mirror_index;
> +			sblock_other->sectorv[0]->mirror_num = 1 + mirror_index;
>  		}
>  
>  		/* build and submit the bios, check checksums */
> @@ -1078,16 +1078,16 @@ static int scrub_handle_errored_block(struct scrub_block *sblock_to_check)
>  	 * area are unreadable.
>  	 */
>  	success = 1;
> -	for (page_num = 0; page_num < sblock_bad->page_count;
> -	     page_num++) {
> -		struct scrub_page *spage_bad = sblock_bad->pagev[page_num];
> +	for (sector_num = 0; sector_num < sblock_bad->sector_count;

This is a simple indexing, so while sector_num is accurate a plain 'i'
would work too. It would also make some lines shorter.

> +	     sector_num++) {
> +		struct scrub_page *spage_bad = sblock_bad->sectorv[sector_num];
>  		struct scrub_block *sblock_other = NULL;
>  
>  		/* skip no-io-error page in scrub */
>  		if (!spage_bad->io_error && !sctx->is_dev_replace)
>  			continue;
>  
> -		if (scrub_is_page_on_raid56(sblock_bad->pagev[0])) {
> +		if (scrub_is_page_on_raid56(sblock_bad->sectorv[0])) {
>  			/*
>  			 * In case of dev replace, if raid56 rebuild process
>  			 * didn't work out correct data, then copy the content
> @@ -1100,10 +1100,10 @@ static int scrub_handle_errored_block(struct scrub_block *sblock_to_check)
>  			/* try to find no-io-error page in mirrors */
>  			for (mirror_index = 0;
>  			     mirror_index < BTRFS_MAX_MIRRORS &&
> -			     sblocks_for_recheck[mirror_index].page_count > 0;
> +			     sblocks_for_recheck[mirror_index].sector_count > 0;
>  			     mirror_index++) {
>  				if (!sblocks_for_recheck[mirror_index].
> -				    pagev[page_num]->io_error) {
> +				    sectorv[sector_num]->io_error) {
>  					sblock_other = sblocks_for_recheck +
>  						       mirror_index;
>  					break;
> @@ -1125,7 +1125,7 @@ static int scrub_handle_errored_block(struct scrub_block *sblock_to_check)
>  				sblock_other = sblock_bad;
>  
>  			if (scrub_write_page_to_dev_replace(sblock_other,
> -							    page_num) != 0) {
> +							    sector_num) != 0) {
>  				atomic64_inc(
>  					&fs_info->dev_replace.num_write_errors);
>  				success = 0;
> @@ -1133,7 +1133,7 @@ static int scrub_handle_errored_block(struct scrub_block *sblock_to_check)
>  		} else if (sblock_other) {
>  			ret = scrub_repair_page_from_good_copy(sblock_bad,
>  							       sblock_other,
> -							       page_num, 0);
> +							       sector_num, 0);
>  			if (0 == ret)
>  				spage_bad->io_error = 0;
>  			else
> @@ -1186,18 +1186,18 @@ static int scrub_handle_errored_block(struct scrub_block *sblock_to_check)
>  			struct scrub_block *sblock = sblocks_for_recheck +
>  						     mirror_index;
>  			struct scrub_recover *recover;
> -			int page_index;
> +			int sector_index;
>  
> -			for (page_index = 0; page_index < sblock->page_count;
> -			     page_index++) {
> -				sblock->pagev[page_index]->sblock = NULL;
> -				recover = sblock->pagev[page_index]->recover;
> +			for (sector_index = 0; sector_index < sblock->sector_count;
> +			     sector_index++) {
> +				sblock->sectorv[sector_index]->sblock = NULL;
> +				recover = sblock->sectorv[sector_index]->recover;
>  				if (recover) {
>  					scrub_put_recover(fs_info, recover);
> -					sblock->pagev[page_index]->recover =
> +					sblock->sectorv[sector_index]->recover =
>  									NULL;
>  				}
> -				scrub_page_put(sblock->pagev[page_index]);
> +				scrub_page_put(sblock->sectorv[sector_index]);
>  			}
>  		}
>  		kfree(sblocks_for_recheck);
> @@ -1255,18 +1255,18 @@ static int scrub_setup_recheck_block(struct scrub_block *original_sblock,
>  {
>  	struct scrub_ctx *sctx = original_sblock->sctx;
>  	struct btrfs_fs_info *fs_info = sctx->fs_info;
> -	u64 length = original_sblock->page_count * fs_info->sectorsize;
> -	u64 logical = original_sblock->pagev[0]->logical;
> -	u64 generation = original_sblock->pagev[0]->generation;
> -	u64 flags = original_sblock->pagev[0]->flags;
> -	u64 have_csum = original_sblock->pagev[0]->have_csum;
> +	u64 length = original_sblock->sector_count * fs_info->sectorsize;

						>> fs_info->sectorsize_bits

> +	u64 logical = original_sblock->sectorv[0]->logical;
> +	u64 generation = original_sblock->sectorv[0]->generation;
> +	u64 flags = original_sblock->sectorv[0]->flags;
> +	u64 have_csum = original_sblock->sectorv[0]->have_csum;
>  	struct scrub_recover *recover;
>  	struct btrfs_io_context *bioc;
>  	u64 sublen;
>  	u64 mapped_length;
>  	u64 stripe_offset;
>  	int stripe_index;
> -	int page_index = 0;
> +	int sector_index = 0;
>  	int mirror_index;
>  	int nmirrors;
>  	int ret;
> @@ -1306,7 +1306,7 @@ static int scrub_setup_recheck_block(struct scrub_block *original_sblock,
>  		recover->bioc = bioc;
>  		recover->map_length = mapped_length;
>  
> -		ASSERT(page_index < SCRUB_MAX_PAGES_PER_BLOCK);
> +		ASSERT(sector_index < SCRUB_MAX_SECTORS_PER_BLOCK);
>  
>  		nmirrors = min(scrub_nr_raid_mirrors(bioc), BTRFS_MAX_MIRRORS);
>  
> @@ -1328,7 +1328,7 @@ static int scrub_setup_recheck_block(struct scrub_block *original_sblock,
>  				return -ENOMEM;
>  			}
>  			scrub_page_get(spage);
> -			sblock->pagev[page_index] = spage;
> +			sblock->sectorv[sector_index] = spage;
>  			spage->sblock = sblock;
>  			spage->flags = flags;
>  			spage->generation = generation;
> @@ -1336,7 +1336,7 @@ static int scrub_setup_recheck_block(struct scrub_block *original_sblock,
>  			spage->have_csum = have_csum;
>  			if (have_csum)
>  				memcpy(spage->csum,
> -				       original_sblock->pagev[0]->csum,
> +				       original_sblock->sectorv[0]->csum,
>  				       sctx->fs_info->csum_size);
>  
>  			scrub_stripe_index_and_offset(logical,
> @@ -1352,13 +1352,13 @@ static int scrub_setup_recheck_block(struct scrub_block *original_sblock,
>  					 stripe_offset;
>  			spage->dev = bioc->stripes[stripe_index].dev;
>  
> -			BUG_ON(page_index >= original_sblock->page_count);
> +			BUG_ON(sector_index >= original_sblock->sector_count);
>  			spage->physical_for_dev_replace =
> -				original_sblock->pagev[page_index]->
> +				original_sblock->sectorv[sector_index]->
>  				physical_for_dev_replace;
>  			/* for missing devices, dev->bdev is NULL */
>  			spage->mirror_num = mirror_index + 1;
> -			sblock->page_count++;
> +			sblock->sector_count++;
>  			spage->page = alloc_page(GFP_NOFS);
>  			if (!spage->page)
>  				goto leave_nomem;
> @@ -1369,7 +1369,7 @@ static int scrub_setup_recheck_block(struct scrub_block *original_sblock,
>  		scrub_put_recover(fs_info, recover);
>  		length -= sublen;
>  		logical += sublen;
> -		page_index++;
> +		sector_index++;
>  	}
>  
>  	return 0;
> @@ -1392,7 +1392,7 @@ static int scrub_submit_raid56_bio_wait(struct btrfs_fs_info *fs_info,
>  	bio->bi_private = &done;
>  	bio->bi_end_io = scrub_bio_wait_endio;
>  
> -	mirror_num = spage->sblock->pagev[0]->mirror_num;
> +	mirror_num = spage->sblock->sectorv[0]->mirror_num;
>  	ret = raid56_parity_recover(bio, spage->recover->bioc,
>  				    spage->recover->map_length,
>  				    mirror_num, 0);
> @@ -1406,9 +1406,9 @@ static int scrub_submit_raid56_bio_wait(struct btrfs_fs_info *fs_info,
>  static void scrub_recheck_block_on_raid56(struct btrfs_fs_info *fs_info,
>  					  struct scrub_block *sblock)
>  {
> -	struct scrub_page *first_page = sblock->pagev[0];
> +	struct scrub_page *first_page = sblock->sectorv[0];
>  	struct bio *bio;
> -	int page_num;
> +	int sector_num;

Also 'i'

>  	/* All pages in sblock belong to the same stripe on the same device. */
>  	ASSERT(first_page->dev);
> @@ -1418,8 +1418,8 @@ static void scrub_recheck_block_on_raid56(struct btrfs_fs_info *fs_info,
>  	bio = btrfs_bio_alloc(BIO_MAX_VECS);
>  	bio_set_dev(bio, first_page->dev->bdev);
>  
> -	for (page_num = 0; page_num < sblock->page_count; page_num++) {
> -		struct scrub_page *spage = sblock->pagev[page_num];
> +	for (sector_num = 0; sector_num < sblock->sector_count; sector_num++) {
> +		struct scrub_page *spage = sblock->sectorv[sector_num];
>  
>  		WARN_ON(!spage->page);
>  		bio_add_page(bio, spage->page, PAGE_SIZE, 0);
> @@ -1436,8 +1436,8 @@ static void scrub_recheck_block_on_raid56(struct btrfs_fs_info *fs_info,
>  
>  	return;
>  out:
> -	for (page_num = 0; page_num < sblock->page_count; page_num++)
> -		sblock->pagev[page_num]->io_error = 1;
> +	for (sector_num = 0; sector_num < sblock->sector_count; sector_num++)
> +		sblock->sectorv[sector_num]->io_error = 1;
>  
>  	sblock->no_io_error_seen = 0;
>  }
> @@ -1453,17 +1453,17 @@ static void scrub_recheck_block(struct btrfs_fs_info *fs_info,
>  				struct scrub_block *sblock,
>  				int retry_failed_mirror)
>  {
> -	int page_num;
> +	int sector_num;

And here too

>  	sblock->no_io_error_seen = 1;
>  
>  	/* short cut for raid56 */
> -	if (!retry_failed_mirror && scrub_is_page_on_raid56(sblock->pagev[0]))
> +	if (!retry_failed_mirror && scrub_is_page_on_raid56(sblock->sectorv[0]))
>  		return scrub_recheck_block_on_raid56(fs_info, sblock);
>  
> -	for (page_num = 0; page_num < sblock->page_count; page_num++) {
> +	for (sector_num = 0; sector_num < sblock->sector_count; sector_num++) {
>  		struct bio *bio;
> -		struct scrub_page *spage = sblock->pagev[page_num];
> +		struct scrub_page *spage = sblock->sectorv[sector_num];
>  
>  		if (spage->dev->bdev == NULL) {
>  			spage->io_error = 1;
> @@ -1507,7 +1507,7 @@ static void scrub_recheck_block_checksum(struct scrub_block *sblock)
>  	sblock->checksum_error = 0;
>  	sblock->generation_error = 0;
>  
> -	if (sblock->pagev[0]->flags & BTRFS_EXTENT_FLAG_DATA)
> +	if (sblock->sectorv[0]->flags & BTRFS_EXTENT_FLAG_DATA)
>  		scrub_checksum_data(sblock);
>  	else
>  		scrub_checksum_tree_block(sblock);
> @@ -1516,15 +1516,15 @@ static void scrub_recheck_block_checksum(struct scrub_block *sblock)
>  static int scrub_repair_block_from_good_copy(struct scrub_block *sblock_bad,
>  					     struct scrub_block *sblock_good)
>  {
> -	int page_num;
> +	int sector_num;

i

>  	int ret = 0;
>  
> -	for (page_num = 0; page_num < sblock_bad->page_count; page_num++) {
> +	for (sector_num = 0; sector_num < sblock_bad->sector_count; sector_num++) {
>  		int ret_sub;
>  
>  		ret_sub = scrub_repair_page_from_good_copy(sblock_bad,
>  							   sblock_good,
> -							   page_num, 1);
> +							   sector_num, 1);
>  		if (ret_sub)
>  			ret = ret_sub;
>  	}
> @@ -1534,10 +1534,10 @@ static int scrub_repair_block_from_good_copy(struct scrub_block *sblock_bad,
>  
>  static int scrub_repair_page_from_good_copy(struct scrub_block *sblock_bad,
>  					    struct scrub_block *sblock_good,
> -					    int page_num, int force_write)
> +					    int sector_num, int force_write)
>  {
> -	struct scrub_page *spage_bad = sblock_bad->pagev[page_num];
> -	struct scrub_page *spage_good = sblock_good->pagev[page_num];
> +	struct scrub_page *spage_bad = sblock_bad->sectorv[sector_num];
> +	struct scrub_page *spage_good = sblock_good->sectorv[sector_num];
>  	struct btrfs_fs_info *fs_info = sblock_bad->sctx->fs_info;
>  	const u32 sectorsize = fs_info->sectorsize;
>  
> @@ -1581,7 +1581,7 @@ static int scrub_repair_page_from_good_copy(struct scrub_block *sblock_bad,
>  static void scrub_write_block_to_dev_replace(struct scrub_block *sblock)
>  {
>  	struct btrfs_fs_info *fs_info = sblock->sctx->fs_info;
> -	int page_num;
> +	int sector_num;

i

>  	/*
>  	 * This block is used for the check of the parity on the source device,
> @@ -1590,19 +1590,19 @@ static void scrub_write_block_to_dev_replace(struct scrub_block *sblock)
>  	if (sblock->sparity)
>  		return;
>  
> -	for (page_num = 0; page_num < sblock->page_count; page_num++) {
> +	for (sector_num = 0; sector_num < sblock->sector_count; sector_num++) {
>  		int ret;
>  
> -		ret = scrub_write_page_to_dev_replace(sblock, page_num);
> +		ret = scrub_write_page_to_dev_replace(sblock, sector_num);
>  		if (ret)
>  			atomic64_inc(&fs_info->dev_replace.num_write_errors);
>  	}
>  }
>  
>  static int scrub_write_page_to_dev_replace(struct scrub_block *sblock,
> -					   int page_num)
> +					   int sector_num)
>  {
> -	struct scrub_page *spage = sblock->pagev[page_num];
> +	struct scrub_page *spage = sblock->sectorv[sector_num];
>  
>  	BUG_ON(spage->page == NULL);
>  	if (spage->io_error)
> @@ -1786,8 +1786,8 @@ static int scrub_checksum(struct scrub_block *sblock)
>  	sblock->generation_error = 0;
>  	sblock->checksum_error = 0;
>  
> -	WARN_ON(sblock->page_count < 1);
> -	flags = sblock->pagev[0]->flags;
> +	WARN_ON(sblock->sector_count < 1);
> +	flags = sblock->sectorv[0]->flags;
>  	ret = 0;
>  	if (flags & BTRFS_EXTENT_FLAG_DATA)
>  		ret = scrub_checksum_data(sblock);
> @@ -1812,8 +1812,8 @@ static int scrub_checksum_data(struct scrub_block *sblock)
>  	struct scrub_page *spage;
>  	char *kaddr;
>  
> -	BUG_ON(sblock->page_count < 1);
> -	spage = sblock->pagev[0];
> +	BUG_ON(sblock->sector_count < 1);
> +	spage = sblock->sectorv[0];
>  	if (!spage->have_csum)
>  		return 0;
>  
> @@ -1852,12 +1852,12 @@ static int scrub_checksum_tree_block(struct scrub_block *sblock)
>  	struct scrub_page *spage;
>  	char *kaddr;
>  
> -	BUG_ON(sblock->page_count < 1);
> +	BUG_ON(sblock->sector_count < 1);
>  
> -	/* Each member in pagev is just one block, not a full page */
> -	ASSERT(sblock->page_count == num_sectors);
> +	/* Each member in pagev is just one sector , not a full page */
> +	ASSERT(sblock->sector_count == num_sectors);
>  
> -	spage = sblock->pagev[0];
> +	spage = sblock->sectorv[0];
>  	kaddr = page_address(spage->page);
>  	h = (struct btrfs_header *)kaddr;
>  	memcpy(on_disk_csum, h->csum, sctx->fs_info->csum_size);
> @@ -1888,7 +1888,7 @@ static int scrub_checksum_tree_block(struct scrub_block *sblock)
>  			    sectorsize - BTRFS_CSUM_SIZE);
>  
>  	for (i = 1; i < num_sectors; i++) {
> -		kaddr = page_address(sblock->pagev[i]->page);
> +		kaddr = page_address(sblock->sectorv[i]->page);
>  		crypto_shash_update(shash, kaddr, sectorsize);
>  	}
>  
> @@ -1911,8 +1911,8 @@ static int scrub_checksum_super(struct scrub_block *sblock)
>  	int fail_gen = 0;
>  	int fail_cor = 0;
>  
> -	BUG_ON(sblock->page_count < 1);
> -	spage = sblock->pagev[0];
> +	BUG_ON(sblock->sector_count < 1);
> +	spage = sblock->sectorv[0];
>  	kaddr = page_address(spage->page);
>  	s = (struct btrfs_super_block *)kaddr;
>  
> @@ -1966,8 +1966,8 @@ static void scrub_block_put(struct scrub_block *sblock)
>  		if (sblock->sparity)
>  			scrub_parity_put(sblock->sparity);
>  
> -		for (i = 0; i < sblock->page_count; i++)
> -			scrub_page_put(sblock->pagev[i]);
> +		for (i = 0; i < sblock->sector_count; i++)
> +			scrub_page_put(sblock->sectorv[i]);
>  		kfree(sblock);
>  	}
>  }
> @@ -2155,8 +2155,8 @@ static void scrub_missing_raid56_worker(struct btrfs_work *work)
>  	u64 logical;
>  	struct btrfs_device *dev;
>  
> -	logical = sblock->pagev[0]->logical;
> -	dev = sblock->pagev[0]->dev;
> +	logical = sblock->sectorv[0]->logical;
> +	dev = sblock->sectorv[0]->dev;
>  
>  	if (sblock->no_io_error_seen)
>  		scrub_recheck_block_checksum(sblock);
> @@ -2193,8 +2193,8 @@ static void scrub_missing_raid56_pages(struct scrub_block *sblock)
>  {
>  	struct scrub_ctx *sctx = sblock->sctx;
>  	struct btrfs_fs_info *fs_info = sctx->fs_info;
> -	u64 length = sblock->page_count * PAGE_SIZE;
> -	u64 logical = sblock->pagev[0]->logical;
> +	u64 length = sblock->sector_count * fs_info->sectorsize;
> +	u64 logical = sblock->sectorv[0]->logical;
>  	struct btrfs_io_context *bioc = NULL;
>  	struct bio *bio;
>  	struct btrfs_raid_bio *rbio;
> @@ -2227,8 +2227,8 @@ static void scrub_missing_raid56_pages(struct scrub_block *sblock)
>  	if (!rbio)
>  		goto rbio_out;
>  
> -	for (i = 0; i < sblock->page_count; i++) {
> -		struct scrub_page *spage = sblock->pagev[i];
> +	for (i = 0; i < sblock->sector_count; i++) {
> +		struct scrub_page *spage = sblock->sectorv[i];
>  
>  		raid56_add_scrub_pages(rbio, spage->page, spage->logical);
>  	}
> @@ -2290,9 +2290,9 @@ static int scrub_pages(struct scrub_ctx *sctx, u64 logical, u32 len,
>  			scrub_block_put(sblock);
>  			return -ENOMEM;
>  		}
> -		ASSERT(index < SCRUB_MAX_PAGES_PER_BLOCK);
> +		ASSERT(index < SCRUB_MAX_SECTORS_PER_BLOCK);
>  		scrub_page_get(spage);
> -		sblock->pagev[index] = spage;
> +		sblock->sectorv[index] = spage;
>  		spage->sblock = sblock;
>  		spage->dev = dev;
>  		spage->flags = flags;
> @@ -2307,7 +2307,7 @@ static int scrub_pages(struct scrub_ctx *sctx, u64 logical, u32 len,
>  		} else {
>  			spage->have_csum = 0;
>  		}
> -		sblock->page_count++;
> +		sblock->sector_count++;
>  		spage->page = alloc_page(GFP_KERNEL);
>  		if (!spage->page)
>  			goto leave_nomem;
> @@ -2317,7 +2317,7 @@ static int scrub_pages(struct scrub_ctx *sctx, u64 logical, u32 len,
>  		physical_for_dev_replace += l;
>  	}
>  
> -	WARN_ON(sblock->page_count == 0);
> +	WARN_ON(sblock->sector_count == 0);
>  	if (test_bit(BTRFS_DEV_STATE_MISSING, &dev->dev_state)) {
>  		/*
>  		 * This case should only be hit for RAID 5/6 device replace. See
> @@ -2325,8 +2325,8 @@ static int scrub_pages(struct scrub_ctx *sctx, u64 logical, u32 len,
>  		 */
>  		scrub_missing_raid56_pages(sblock);
>  	} else {
> -		for (index = 0; index < sblock->page_count; index++) {
> -			struct scrub_page *spage = sblock->pagev[index];
> +		for (index = 0; index < sblock->sector_count; index++) {
> +			struct scrub_page *spage = sblock->sectorv[index];
>  			int ret;
>  
>  			ret = scrub_add_page_to_rd_bio(sctx, spage);
> @@ -2456,8 +2456,8 @@ static void scrub_block_complete(struct scrub_block *sblock)
>  	}
>  
>  	if (sblock->sparity && corrupted && !sblock->data_corrected) {
> -		u64 start = sblock->pagev[0]->logical;
> -		u64 end = sblock->pagev[sblock->page_count - 1]->logical +
> +		u64 start = sblock->sectorv[0]->logical;
> +		u64 end = sblock->sectorv[sblock->sector_count - 1]->logical +
>  			  sblock->sctx->fs_info->sectorsize;
>  
>  		ASSERT(end - start <= U32_MAX);
> @@ -2624,10 +2624,10 @@ static int scrub_pages_for_parity(struct scrub_parity *sparity,
>  			scrub_block_put(sblock);
>  			return -ENOMEM;
>  		}
> -		ASSERT(index < SCRUB_MAX_PAGES_PER_BLOCK);
> +		ASSERT(index < SCRUB_MAX_SECTORS_PER_BLOCK);
>  		/* For scrub block */
>  		scrub_page_get(spage);
> -		sblock->pagev[index] = spage;
> +		sblock->sectorv[index] = spage;
>  		/* For scrub parity */
>  		scrub_page_get(spage);
>  		list_add_tail(&spage->list, &sparity->spages);
> @@ -2644,7 +2644,7 @@ static int scrub_pages_for_parity(struct scrub_parity *sparity,
>  		} else {
>  			spage->have_csum = 0;
>  		}
> -		sblock->page_count++;
> +		sblock->sector_count++;
>  		spage->page = alloc_page(GFP_KERNEL);
>  		if (!spage->page)
>  			goto leave_nomem;
> @@ -2656,9 +2656,9 @@ static int scrub_pages_for_parity(struct scrub_parity *sparity,
>  		physical += sectorsize;
>  	}
>  
> -	WARN_ON(sblock->page_count == 0);
> -	for (index = 0; index < sblock->page_count; index++) {
> -		struct scrub_page *spage = sblock->pagev[index];
> +	WARN_ON(sblock->sector_count == 0);
> +	for (index = 0; index < sblock->sector_count; index++) {
> +		struct scrub_page *spage = sblock->sectorv[index];
>  		int ret;
>  
>  		ret = scrub_add_page_to_rd_bio(sctx, spage);
> @@ -4058,18 +4058,18 @@ int btrfs_scrub_dev(struct btrfs_fs_info *fs_info, u64 devid, u64 start,
>  	}
>  
>  	if (fs_info->nodesize >
> -	    PAGE_SIZE * SCRUB_MAX_PAGES_PER_BLOCK ||
> -	    fs_info->sectorsize > PAGE_SIZE * SCRUB_MAX_PAGES_PER_BLOCK) {
> +	    SCRUB_MAX_SECTORS_PER_BLOCK * fs_info->sectorsize ||
> +	    fs_info->sectorsize > PAGE_SIZE * SCRUB_MAX_SECTORS_PER_BLOCK) {
>  		/*
>  		 * would exhaust the array bounds of pagev member in
>  		 * struct scrub_block
>  		 */
>  		btrfs_err(fs_info,
> -			  "scrub: size assumption nodesize and sectorsize <= SCRUB_MAX_PAGES_PER_BLOCK (%d <= %d && %d <= %d) fails",
> +			  "scrub: size assumption nodesize and sectorsize <= SCRUB_MAX_SECTORS_PER_BLOCK (%d <= %d && %d <= %d) fails",
>  		       fs_info->nodesize,
> -		       SCRUB_MAX_PAGES_PER_BLOCK,
> +		       SCRUB_MAX_SECTORS_PER_BLOCK,
>  		       fs_info->sectorsize,
> -		       SCRUB_MAX_PAGES_PER_BLOCK);
> +		       SCRUB_MAX_SECTORS_PER_BLOCK);
>  		return -EINVAL;
>  	}
>  
> -- 
> 2.35.1

  reply	other threads:[~2022-03-11 17:53 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-11  7:34 [PATCH v2 0/3] btrfs: scrub: big renaming to address the page and sector difference Qu Wenruo
2022-03-11  7:34 ` [PATCH v2 1/3] btrfs: scrub: rename members related to scrub_block::pagev Qu Wenruo
2022-03-11 17:49   ` David Sterba [this message]
2022-03-11 23:17     ` Qu Wenruo
2022-03-14 19:17       ` David Sterba
2022-03-11  7:34 ` [PATCH v2 2/3] btrfs: scrub: rename scrub_page to scrub_sector Qu Wenruo
2022-03-11 18:01   ` David Sterba
2022-03-11  7:34 ` [PATCH v2 3/3] btrfs: scrub: rename scrub_bio::pagev and related members Qu Wenruo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220311174914.GE12643@twin.jikos.cz \
    --to=dsterba@suse.cz \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=wqu@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox