Message ID | 20210128104847.22773-1-colyli@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | bcache: only check feature sets when sb->version >= BCACHE_SB_VERSION_CDEV_WITH_FEATURES | expand |
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@vger.kernel.org # 5.9+ > Reported-and-tested-by: Bockholdt Arne <a.bockholdt@precitec-optronik.de> > Signed-off-by: Coly Li <colyli@suse.de> 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); \ > } \ >
On 1/28/21 3:48 AM, 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. Applied, thanks.
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); \ } \
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@vger.kernel.org # 5.9+ Reported-and-tested-by: Bockholdt Arne <a.bockholdt@precitec-optronik.de> Signed-off-by: Coly Li <colyli@suse.de> --- drivers/md/bcache/features.h | 6 ++++++ 1 file changed, 6 insertions(+)