fscrypt_operations
Regular
4.4
: Absent ⚠️
4.8
: ✅struct fscrypt_operations {
int (*get_context)(struct inode *, void *, size_t);
int (*key_prefix)(struct inode *, u8 **);
int (*prepare_context)(struct inode *);
int (*set_context)(struct inode *, const void *, size_t, void *);
int (*dummy_context)(struct inode *);
bool (*is_encrypted)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int (*max_namelen)(struct inode *);
};
4.10
: ✅struct fscrypt_operations {
unsigned int flags;
int (*get_context)(struct inode *, void *, size_t);
int (*key_prefix)(struct inode *, u8 **);
int (*prepare_context)(struct inode *);
int (*set_context)(struct inode *, const void *, size_t, void *);
int (*dummy_context)(struct inode *);
bool (*is_encrypted)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int (*max_namelen)(struct inode *);
};
4.13
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
bool (*dummy_context)(struct inode *);
bool (*is_encrypted)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int (*max_namelen)(struct inode *);
};
4.15
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
bool (*dummy_context)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int (*max_namelen)(struct inode *);
};
4.18
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
bool (*dummy_context)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
};
5.0
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
bool (*dummy_context)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
};
5.3
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
bool (*dummy_context)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
};
5.4
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
bool (*dummy_context)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
};
5.8
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
const union fscrypt_context * (*get_dummy_context)(struct super_block *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
bool (*has_stable_inodes)(struct super_block *);
void (*get_ino_and_lblk_bits)(struct super_block *, int *, int *);
};
5.11
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
const union fscrypt_policy * (*get_dummy_policy)(struct super_block *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
bool (*has_stable_inodes)(struct super_block *);
void (*get_ino_and_lblk_bits)(struct super_block *, int *, int *);
int (*get_num_devices)(struct super_block *);
void (*get_devices)(struct super_block *, struct request_queue **);
};
5.13
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
const union fscrypt_policy * (*get_dummy_policy)(struct super_block *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
bool (*has_stable_inodes)(struct super_block *);
void (*get_ino_and_lblk_bits)(struct super_block *, int *, int *);
int (*get_num_devices)(struct super_block *);
void (*get_devices)(struct super_block *, struct request_queue **);
};
5.15
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
const union fscrypt_policy * (*get_dummy_policy)(struct super_block *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
bool (*has_stable_inodes)(struct super_block *);
void (*get_ino_and_lblk_bits)(struct super_block *, int *, int *);
int (*get_num_devices)(struct super_block *);
void (*get_devices)(struct super_block *, struct request_queue **);
};
5.19
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
const union fscrypt_policy * (*get_dummy_policy)(struct super_block *);
bool (*empty_dir)(struct inode *);
bool (*has_stable_inodes)(struct super_block *);
void (*get_ino_and_lblk_bits)(struct super_block *, int *, int *);
int (*get_num_devices)(struct super_block *);
void (*get_devices)(struct super_block *, struct request_queue **);
};
6.2
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
const union fscrypt_policy * (*get_dummy_policy)(struct super_block *);
bool (*empty_dir)(struct inode *);
bool (*has_stable_inodes)(struct super_block *);
void (*get_ino_and_lblk_bits)(struct super_block *, int *, int *);
struct block_device ** (*get_devices)(struct super_block *, unsigned int *);
};
6.5
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
const union fscrypt_policy * (*get_dummy_policy)(struct super_block *);
bool (*empty_dir)(struct inode *);
bool (*has_stable_inodes)(struct super_block *);
void (*get_ino_and_lblk_bits)(struct super_block *, int *, int *);
struct block_device ** (*get_devices)(struct super_block *, unsigned int *);
};
6.8
: ✅struct fscrypt_operations {
unsigned int needs_bounce_pages;
unsigned int has_32bit_inodes;
unsigned int supports_subblock_data_units;
const char *legacy_key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
const union fscrypt_policy * (*get_dummy_policy)(struct super_block *);
bool (*empty_dir)(struct inode *);
bool (*has_stable_inodes)(struct super_block *);
struct block_device ** (*get_devices)(struct super_block *, unsigned int *);
};
arm64
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
bool (*dummy_context)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
};
armhf
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
bool (*dummy_context)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
};
ppc64el
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
bool (*dummy_context)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
};
riscv64
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
bool (*dummy_context)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
};
aws
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
bool (*dummy_context)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
};
azure
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
bool (*dummy_context)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
};
gcp
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
bool (*dummy_context)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
};
lowlatency
: ✅struct fscrypt_operations {
unsigned int flags;
const char *key_prefix;
int (*get_context)(struct inode *, void *, size_t);
int (*set_context)(struct inode *, const void *, size_t, void *);
bool (*dummy_context)(struct inode *);
bool (*empty_dir)(struct inode *);
unsigned int max_namelen;
};
Regular
4.8
and 4.10
⚠️unsigned int flags
4.10
and 4.13
⚠️int (*prepare_context)(struct inode *)
int (*key_prefix)(struct inode *, u8 **)
➡️ const char *key_prefix
int (*dummy_context)(struct inode *)
➡️ bool (*dummy_context)(struct inode *)
4.13
and 4.15
⚠️bool (*is_encrypted)(struct inode *)
4.15
and 4.18
⚠️unsigned int (*max_namelen)(struct inode *)
➡️ unsigned int max_namelen
4.18
and 5.0
✅
5.0
and 5.3
✅
5.3
and 5.4
✅
5.4
and 5.8
⚠️const union fscrypt_context * (*get_dummy_context)(struct super_block *)
bool (*has_stable_inodes)(struct super_block *)
void (*get_ino_and_lblk_bits)(struct super_block *, int *, int *)
bool (*dummy_context)(struct inode *)
5.8
and 5.11
⚠️const union fscrypt_policy * (*get_dummy_policy)(struct super_block *)
int (*get_num_devices)(struct super_block *)
void (*get_devices)(struct super_block *, struct request_queue **)
const union fscrypt_context * (*get_dummy_context)(struct super_block *)
5.11
and 5.13
✅
5.13
and 5.15
✅
5.15
and 5.19
⚠️unsigned int max_namelen
5.19
and 6.2
⚠️int (*get_num_devices)(struct super_block *)
void (*get_devices)(struct super_block *, struct request_queue **)
➡️ struct block_device ** (*get_devices)(struct super_block *, unsigned int *)
6.2
and 6.5
✅
6.5
and 6.8
⚠️unsigned int needs_bounce_pages
unsigned int has_32bit_inodes
unsigned int supports_subblock_data_units
const char *legacy_key_prefix
unsigned int flags
const char *key_prefix
void (*get_ino_and_lblk_bits)(struct super_block *, int *, int *)
amd64
and arm64
✅
amd64
and armhf
✅
amd64
and ppc64el
✅
amd64
and riscv64
✅
generic
and aws
✅
generic
and azure
✅
generic
and gcp
✅
generic
and lowlatency
✅