features.h (1dfc0686c29a9bbd3a446a29f9ccde3dec3bc75a) | features.h (b16671e8f493e3df40b1fb0dff4078f391c5099a) |
---|---|
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2#ifndef _BCACHE_FEATURES_H 3#define _BCACHE_FEATURES_H 4 5#include <linux/bcache.h> 6#include <linux/kernel.h> 7#include <linux/types.h> 8 9#define BCH_FEATURE_COMPAT 0 10#define BCH_FEATURE_RO_COMPAT 1 11#define BCH_FEATURE_INCOMPAT 2 12#define BCH_FEATURE_TYPE_MASK 0x03 13 14/* Feature set definition */ 15/* Incompat feature set */ | 1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2#ifndef _BCACHE_FEATURES_H 3#define _BCACHE_FEATURES_H 4 5#include <linux/bcache.h> 6#include <linux/kernel.h> 7#include <linux/types.h> 8 9#define BCH_FEATURE_COMPAT 0 10#define BCH_FEATURE_RO_COMPAT 1 11#define BCH_FEATURE_INCOMPAT 2 12#define BCH_FEATURE_TYPE_MASK 0x03 13 14/* Feature set definition */ 15/* Incompat feature set */ |
16#define BCH_FEATURE_INCOMPAT_LARGE_BUCKET 0x0001 /* 32bit bucket size */ | 16/* 32bit bucket size, obsoleted */ 17#define BCH_FEATURE_INCOMPAT_OBSO_LARGE_BUCKET 0x0001 18/* real bucket size is (1 << bucket_size) */ 19#define BCH_FEATURE_INCOMPAT_LOG_LARGE_BUCKET_SIZE 0x0002 |
17 18#define BCH_FEATURE_COMPAT_SUPP 0 19#define BCH_FEATURE_RO_COMPAT_SUPP 0 | 20 21#define BCH_FEATURE_COMPAT_SUPP 0 22#define BCH_FEATURE_RO_COMPAT_SUPP 0 |
20#define BCH_FEATURE_INCOMPAT_SUPP BCH_FEATURE_INCOMPAT_LARGE_BUCKET | 23#define BCH_FEATURE_INCOMPAT_SUPP (BCH_FEATURE_INCOMPAT_OBSO_LARGE_BUCKET| \ 24 BCH_FEATURE_INCOMPAT_LOG_LARGE_BUCKET_SIZE) |
21 22#define BCH_HAS_COMPAT_FEATURE(sb, mask) \ 23 ((sb)->feature_compat & (mask)) 24#define BCH_HAS_RO_COMPAT_FEATURE(sb, mask) \ 25 ((sb)->feature_ro_compat & (mask)) 26#define BCH_HAS_INCOMPAT_FEATURE(sb, mask) \ 27 ((sb)->feature_incompat & (mask)) 28 --- 43 unchanged lines hidden (view full) --- 72 BCH##_FEATURE_INCOMPAT_##flagname; \ 73} \ 74static inline void bch_clear_feature_##name(struct cache_sb *sb) \ 75{ \ 76 (sb)->feature_incompat &= \ 77 ~BCH##_FEATURE_INCOMPAT_##flagname; \ 78} 79 | 25 26#define BCH_HAS_COMPAT_FEATURE(sb, mask) \ 27 ((sb)->feature_compat & (mask)) 28#define BCH_HAS_RO_COMPAT_FEATURE(sb, mask) \ 29 ((sb)->feature_ro_compat & (mask)) 30#define BCH_HAS_INCOMPAT_FEATURE(sb, mask) \ 31 ((sb)->feature_incompat & (mask)) 32 --- 43 unchanged lines hidden (view full) --- 76 BCH##_FEATURE_INCOMPAT_##flagname; \ 77} \ 78static inline void bch_clear_feature_##name(struct cache_sb *sb) \ 79{ \ 80 (sb)->feature_incompat &= \ 81 ~BCH##_FEATURE_INCOMPAT_##flagname; \ 82} 83 |
80BCH_FEATURE_INCOMPAT_FUNCS(large_bucket, LARGE_BUCKET); | 84BCH_FEATURE_INCOMPAT_FUNCS(obso_large_bucket, OBSO_LARGE_BUCKET); 85BCH_FEATURE_INCOMPAT_FUNCS(large_bucket, LOG_LARGE_BUCKET_SIZE); |
81 82static inline bool bch_has_unknown_compat_features(struct cache_sb *sb) 83{ 84 return ((sb->feature_compat & ~BCH_FEATURE_COMPAT_SUPP) != 0); 85} 86 87static inline bool bch_has_unknown_ro_compat_features(struct cache_sb *sb) 88{ --- 13 unchanged lines hidden --- | 86 87static inline bool bch_has_unknown_compat_features(struct cache_sb *sb) 88{ 89 return ((sb->feature_compat & ~BCH_FEATURE_COMPAT_SUPP) != 0); 90} 91 92static inline bool bch_has_unknown_ro_compat_features(struct cache_sb *sb) 93{ --- 13 unchanged lines hidden --- |