forked from Freescale/linux-fslc
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
bcache: increase super block version for cache device and backing device
The new added super block version BCACHE_SB_VERSION_BDEV_WITH_FEATURES (5) BCACHE_SB_VERSION_CDEV_WITH_FEATURES value (6), is for the feature set bits. Devices have super block version equal to the new version will have three new members for feature set bits in the on-disk super block, __le64 feature_compat; __le64 feature_incompat; __le64 feature_ro_compat; They are used for further new features which may introduce on-disk format change, and avoid unncessary super block version increase. The very basic features handling code skeleton is also initialized in this patch. Signed-off-by: Coly Li <[email protected]> Reviewed-by: Hannes Reinecke <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
- Loading branch information
Showing
3 changed files
with
128 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | ||
#ifndef _BCACHE_FEATURES_H | ||
#define _BCACHE_FEATURES_H | ||
|
||
#include <linux/bcache.h> | ||
#include <linux/kernel.h> | ||
#include <linux/types.h> | ||
|
||
#define BCH_FEATURE_COMPAT 0 | ||
#define BCH_FEATURE_RO_COMPAT 1 | ||
#define BCH_FEATURE_INCOMPAT 2 | ||
#define BCH_FEATURE_TYPE_MASK 0x03 | ||
|
||
#define BCH_FEATURE_COMPAT_SUUP 0 | ||
#define BCH_FEATURE_RO_COMPAT_SUUP 0 | ||
#define BCH_FEATURE_INCOMPAT_SUUP 0 | ||
|
||
#define BCH_HAS_COMPAT_FEATURE(sb, mask) \ | ||
((sb)->feature_compat & (mask)) | ||
#define BCH_HAS_RO_COMPAT_FEATURE(sb, mask) \ | ||
((sb)->feature_ro_compat & (mask)) | ||
#define BCH_HAS_INCOMPAT_FEATURE(sb, mask) \ | ||
((sb)->feature_incompat & (mask)) | ||
|
||
/* Feature set definition */ | ||
|
||
#define BCH_FEATURE_COMPAT_FUNCS(name, flagname) \ | ||
static inline int bch_has_feature_##name(struct cache_sb *sb) \ | ||
{ \ | ||
return (((sb)->feature_compat & \ | ||
BCH##_FEATURE_COMPAT_##flagname) != 0); \ | ||
} \ | ||
static inline void bch_set_feature_##name(struct cache_sb *sb) \ | ||
{ \ | ||
(sb)->feature_compat |= \ | ||
BCH##_FEATURE_COMPAT_##flagname; \ | ||
} \ | ||
static inline void bch_clear_feature_##name(struct cache_sb *sb) \ | ||
{ \ | ||
(sb)->feature_compat &= \ | ||
~BCH##_FEATURE_COMPAT_##flagname; \ | ||
} | ||
|
||
#define BCH_FEATURE_RO_COMPAT_FUNCS(name, flagname) \ | ||
static inline int bch_has_feature_##name(struct cache_sb *sb) \ | ||
{ \ | ||
return (((sb)->feature_ro_compat & \ | ||
BCH##_FEATURE_RO_COMPAT_##flagname) != 0); \ | ||
} \ | ||
static inline void bch_set_feature_##name(struct cache_sb *sb) \ | ||
{ \ | ||
(sb)->feature_ro_compat |= \ | ||
BCH##_FEATURE_RO_COMPAT_##flagname; \ | ||
} \ | ||
static inline void bch_clear_feature_##name(struct cache_sb *sb) \ | ||
{ \ | ||
(sb)->feature_ro_compat &= \ | ||
~BCH##_FEATURE_RO_COMPAT_##flagname; \ | ||
} | ||
|
||
#define BCH_FEATURE_INCOMPAT_FUNCS(name, flagname) \ | ||
static inline int bch_has_feature_##name(struct cache_sb *sb) \ | ||
{ \ | ||
return (((sb)->feature_incompat & \ | ||
BCH##_FEATURE_INCOMPAT_##flagname) != 0); \ | ||
} \ | ||
static inline void bch_set_feature_##name(struct cache_sb *sb) \ | ||
{ \ | ||
(sb)->feature_incompat |= \ | ||
BCH##_FEATURE_INCOMPAT_##flagname; \ | ||
} \ | ||
static inline void bch_clear_feature_##name(struct cache_sb *sb) \ | ||
{ \ | ||
(sb)->feature_incompat &= \ | ||
~BCH##_FEATURE_INCOMPAT_##flagname; \ | ||
} | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters