mirror of https://gitee.com/openkylin/linux.git
erofs: use feature_incompat rather than requirements
As Christoph said [1], "This is only cosmetic, why not stick to feature_compat and feature_incompat?" In my thought, requirements means "incompatible" instead of "feature" though. [1] https://lore.kernel.org/r/20190902125109.GA9826@infradead.org/ Reported-by: Christoph Hellwig <hch@infradead.org> Signed-off-by: Gao Xiang <gaoxiang25@huawei.com> Link: https://lore.kernel.org/r/20190904020912.63925-7-gaoxiang25@huawei.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c39747f770
commit
426a930891
|
@ -129,7 +129,8 @@ static int lz4_decompress(struct z_erofs_decompress_req *rq, u8 *out)
|
|||
support_0padding = false;
|
||||
|
||||
/* decompression inplace is only safe when 0padding is enabled */
|
||||
if (EROFS_SB(rq->sb)->requirements & EROFS_REQUIREMENT_LZ4_0PADDING) {
|
||||
if (EROFS_SB(rq->sb)->feature_incompat &
|
||||
EROFS_FEATURE_INCOMPAT_LZ4_0PADDING) {
|
||||
support_0padding = true;
|
||||
|
||||
while (!src[inputmargin & ~PAGE_MASK])
|
||||
|
|
|
@ -11,17 +11,17 @@
|
|||
#define EROFS_SUPER_OFFSET 1024
|
||||
|
||||
/*
|
||||
* Any bits that aren't in EROFS_ALL_REQUIREMENTS should be
|
||||
* incompatible with this kernel version.
|
||||
* Any bits that aren't in EROFS_ALL_FEATURE_INCOMPAT should
|
||||
* be incompatible with this kernel version.
|
||||
*/
|
||||
#define EROFS_REQUIREMENT_LZ4_0PADDING 0x00000001
|
||||
#define EROFS_ALL_REQUIREMENTS EROFS_REQUIREMENT_LZ4_0PADDING
|
||||
#define EROFS_FEATURE_INCOMPAT_LZ4_0PADDING 0x00000001
|
||||
#define EROFS_ALL_FEATURE_INCOMPAT EROFS_FEATURE_INCOMPAT_LZ4_0PADDING
|
||||
|
||||
/* 128-byte erofs on-disk super block */
|
||||
struct erofs_super_block {
|
||||
__le32 magic; /* file system magic number */
|
||||
__le32 checksum; /* crc32c(super_block) */
|
||||
__le32 features; /* (aka. feature_compat) */
|
||||
__le32 feature_compat;
|
||||
__u8 blkszbits; /* support block_size == PAGE_SIZE only */
|
||||
__u8 reserved;
|
||||
|
||||
|
@ -35,7 +35,7 @@ struct erofs_super_block {
|
|||
__le32 xattr_blkaddr; /* start block address of shared xattr area */
|
||||
__u8 uuid[16]; /* 128-bit uuid for volume */
|
||||
__u8 volume_name[16]; /* volume name */
|
||||
__le32 requirements; /* (aka. feature_incompat) */
|
||||
__le32 feature_incompat;
|
||||
|
||||
__u8 reserved2[44];
|
||||
};
|
||||
|
|
|
@ -96,7 +96,7 @@ struct erofs_sb_info {
|
|||
|
||||
u8 uuid[16]; /* 128-bit uuid for volume */
|
||||
u8 volume_name[16]; /* volume name */
|
||||
u32 requirements;
|
||||
u32 feature_incompat;
|
||||
|
||||
unsigned int mount_opt;
|
||||
|
||||
|
|
|
@ -67,14 +67,14 @@ static void free_inode(struct inode *inode)
|
|||
static bool check_layout_compatibility(struct super_block *sb,
|
||||
struct erofs_super_block *layout)
|
||||
{
|
||||
const unsigned int requirements = le32_to_cpu(layout->requirements);
|
||||
const unsigned int feature = le32_to_cpu(layout->feature_incompat);
|
||||
|
||||
EROFS_SB(sb)->requirements = requirements;
|
||||
EROFS_SB(sb)->feature_incompat = feature;
|
||||
|
||||
/* check if current kernel meets all mandatory requirements */
|
||||
if (requirements & (~EROFS_ALL_REQUIREMENTS)) {
|
||||
errln("unidentified requirements %x, please upgrade kernel version",
|
||||
requirements & ~EROFS_ALL_REQUIREMENTS);
|
||||
if (feature & (~EROFS_ALL_FEATURE_INCOMPAT)) {
|
||||
errln("unidentified incompatible feature %x, please upgrade kernel version",
|
||||
feature & ~EROFS_ALL_FEATURE_INCOMPAT);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue