Re: [PATCH] bcache: only check feature sets when sb->version >= BCACHE_SB_VERSION_CDEV_WITH_FEATURES

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/28/21 6:48 PM, Coly Li wrote:
> For super block version < BCACHE_SB_VERSION_CDEV_WITH_FEATURES, it
> doesn't make sense to check the feature sets. This patch checks
> super block version in bch_has_feature_* routines, if the version
> doesn't have feature sets yet, returns 0 (false) to the caller.
> 
> Fixes: 5342fd425502 ("bcache: set bcache device into read-only mode for BCH_FEATURE_INCOMPAT_OBSO_LARGE_BUCKET") 
> Fixes: ffa470327572 ("bcache: add bucket_size_hi into struct cache_sb_disk for large bucket")
> Cc: stable@xxxxxxxxxxxxxxx # 5.9+
> Reported-and-tested-by: Bockholdt Arne <a.bockholdt@xxxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Coly Li <colyli@xxxxxxx>

Hi Jens,

Please take this patch for v5.11-rc6, this is necessary to go with other
fixes in previous wave.

Thank you in advance.

Coly Li


> ---
>  drivers/md/bcache/features.h | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/md/bcache/features.h b/drivers/md/bcache/features.h
> index 84fc2c0f0101..d1c8fd3977fc 100644
> --- a/drivers/md/bcache/features.h
> +++ b/drivers/md/bcache/features.h
> @@ -33,6 +33,8 @@
>  #define BCH_FEATURE_COMPAT_FUNCS(name, flagname) \
>  static inline int bch_has_feature_##name(struct cache_sb *sb) \
>  { \
> +	if (sb->version < BCACHE_SB_VERSION_CDEV_WITH_FEATURES) \
> +		return 0; \
>  	return (((sb)->feature_compat & \
>  		BCH##_FEATURE_COMPAT_##flagname) != 0); \
>  } \
> @@ -50,6 +52,8 @@ static inline void bch_clear_feature_##name(struct cache_sb *sb) \
>  #define BCH_FEATURE_RO_COMPAT_FUNCS(name, flagname) \
>  static inline int bch_has_feature_##name(struct cache_sb *sb) \
>  { \
> +	if (sb->version < BCACHE_SB_VERSION_CDEV_WITH_FEATURES) \
> +		return 0; \
>  	return (((sb)->feature_ro_compat & \
>  		BCH##_FEATURE_RO_COMPAT_##flagname) != 0); \
>  } \
> @@ -67,6 +71,8 @@ static inline void bch_clear_feature_##name(struct cache_sb *sb) \
>  #define BCH_FEATURE_INCOMPAT_FUNCS(name, flagname) \
>  static inline int bch_has_feature_##name(struct cache_sb *sb) \
>  { \
> +	if (sb->version < BCACHE_SB_VERSION_CDEV_WITH_FEATURES) \
> +		return 0; \
>  	return (((sb)->feature_incompat & \
>  		BCH##_FEATURE_INCOMPAT_##flagname) != 0); \
>  } \
> 




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux