Re: [PATCH v2 03/17] bcache: add more accurate error information in read_super_basic()

Hannes Reinecke
2020-07-15T06:04:58Z

On 7/15/20 7:45 AM, Coly Li wrote:
> The improperly set bucket or block size will trigger error in
> read_super_basic(). For large bucket size, a more accurate error message
> for invalid bucket or block size is necessary.
>
> This patch disassembles the combined if() checks into multile single

multiple

> if() check, and provide more accurate error message for each check
> failure condition.
>
> Signed-off-by: Coly Li <colyli@suse.de>
> ---
> drivers/md/bcache/super.c | 19 ++++++++++++++-----
> 1 file changed, 14 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
> index 74681fb92158..2abeb3ba88be 100644
> --- a/drivers/md/bcache/super.c
> +++ b/drivers/md/bcache/super.c
> @@ -79,11 +79,20 @@ static const char *read_super_basic(struct cache_sb *sb, struct block_device *b
> if (sb->nbuckets < 1 << 7)
> goto err;
>
> - err = "Bad block/bucket size";
> - if (!is_power_of_2(sb->block_size) ||
> - sb->block_size > PAGE_SECTORS ||
> - !is_power_of_2(sb->bucket_size) ||
> - sb->bucket_size < PAGE_SECTORS)
> + err = "Bad block size (not power of 2)";
> + if (!is_power_of_2(sb->block_size))
> + goto err;
> +
> + err = "Bad block size (larger than page size)";
> + if (sb->block_size > PAGE_SECTORS)
> + goto err;
> +
> + err = "Bad bucket size (not power of 2)";
> + if (!is_power_of_2(sb->bucket_size))
> + goto err;
> +
> + err = "Bad bucket size (smaller than page size)";
> + if (sb->bucket_size < PAGE_SECTORS)
> goto err;
>
> err = "Invalid superblock: device too small";
>
Otherwise:

Reviewed-by: Hannes Reinecke <hare@suse.de>

Cheers,

Hannes
--
Dr. Hannes Reinecke Teamlead Storage & Networking
hare@suse.de +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer