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); \ > } \ >