inode_operationsRegular
4.4: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*follow_link)(struct dentry *, void **);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
void (*put_link)(struct inode *, void *);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *);
int (*rename2)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(struct vfsmount *, struct dentry *, struct kstat *);
int (*setxattr)(struct dentry *, const char *, const void *, size_t, int);
ssize_t (*getxattr)(struct dentry *, const char *, void *, size_t);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*removexattr)(struct dentry *, const char *);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t, int *);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
4.8: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *);
int (*rename2)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(struct vfsmount *, struct dentry *, struct kstat *);
int (*setxattr)(struct dentry *, struct inode *, const char *, const void *, size_t, int);
ssize_t (*getxattr)(struct dentry *, struct inode *, const char *, void *, size_t);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*removexattr)(struct dentry *, const char *);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t, int *);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
4.10: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(struct vfsmount *, struct dentry *, struct kstat *);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t, int *);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
4.13: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t, int *);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
4.15: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t, int *);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
4.18: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t, int *);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
5.0: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
5.3: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
5.4: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
5.8: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
5.11: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
5.13: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct user_namespace *, struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct user_namespace *, struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct user_namespace *, struct inode *, struct dentry *, const char *);
int (*mkdir)(struct user_namespace *, struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct user_namespace *, struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct user_namespace *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct user_namespace *, struct dentry *, struct iattr *);
int (*getattr)(struct user_namespace *, const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct user_namespace *, struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct user_namespace *, struct inode *, struct posix_acl *, int);
int (*fileattr_set)(struct user_namespace *, struct dentry *, struct fileattr *);
int (*fileattr_get)(struct dentry *, struct fileattr *);
};
5.15: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct user_namespace *, struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int, bool);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct user_namespace *, struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct user_namespace *, struct inode *, struct dentry *, const char *);
int (*mkdir)(struct user_namespace *, struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct user_namespace *, struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct user_namespace *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct user_namespace *, struct dentry *, struct iattr *);
int (*getattr)(struct user_namespace *, const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct user_namespace *, struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct user_namespace *, struct inode *, struct posix_acl *, int);
int (*fileattr_set)(struct user_namespace *, struct dentry *, struct fileattr *);
int (*fileattr_get)(struct dentry *, struct fileattr *);
};
5.19: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct user_namespace *, struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int, bool);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct user_namespace *, struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct user_namespace *, struct inode *, struct dentry *, const char *);
int (*mkdir)(struct user_namespace *, struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct user_namespace *, struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct user_namespace *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct user_namespace *, struct dentry *, struct iattr *);
int (*getattr)(struct user_namespace *, const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct user_namespace *, struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct user_namespace *, struct inode *, struct posix_acl *, int);
int (*fileattr_set)(struct user_namespace *, struct dentry *, struct fileattr *);
int (*fileattr_get)(struct dentry *, struct fileattr *);
};
6.2: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct user_namespace *, struct inode *, int);
struct posix_acl * (*get_inode_acl)(struct inode *, int, bool);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct user_namespace *, struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct user_namespace *, struct inode *, struct dentry *, const char *);
int (*mkdir)(struct user_namespace *, struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct user_namespace *, struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct user_namespace *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct user_namespace *, struct dentry *, struct iattr *);
int (*getattr)(struct user_namespace *, const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct user_namespace *, struct inode *, struct file *, umode_t);
struct posix_acl * (*get_acl)(struct user_namespace *, struct dentry *, int);
int (*set_acl)(struct user_namespace *, struct dentry *, struct posix_acl *, int);
int (*fileattr_set)(struct user_namespace *, struct dentry *, struct fileattr *);
int (*fileattr_get)(struct dentry *, struct fileattr *);
};
6.5: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct mnt_idmap *, struct inode *, int);
struct posix_acl * (*get_inode_acl)(struct inode *, int, bool);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct mnt_idmap *, struct inode *, struct dentry *, const char *);
int (*mkdir)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct mnt_idmap *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct mnt_idmap *, struct dentry *, struct iattr *);
int (*getattr)(struct mnt_idmap *, const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct mnt_idmap *, struct inode *, struct file *, umode_t);
struct posix_acl * (*get_acl)(struct mnt_idmap *, struct dentry *, int);
int (*set_acl)(struct mnt_idmap *, struct dentry *, struct posix_acl *, int);
int (*fileattr_set)(struct mnt_idmap *, struct dentry *, struct fileattr *);
int (*fileattr_get)(struct dentry *, struct fileattr *);
};
6.8: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct mnt_idmap *, struct inode *, int);
struct posix_acl * (*get_inode_acl)(struct inode *, int, bool);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct mnt_idmap *, struct inode *, struct dentry *, const char *);
int (*mkdir)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct mnt_idmap *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct mnt_idmap *, struct dentry *, struct iattr *);
int (*getattr)(struct mnt_idmap *, const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct mnt_idmap *, struct inode *, struct file *, umode_t);
struct posix_acl * (*get_acl)(struct mnt_idmap *, struct dentry *, int);
int (*set_acl)(struct mnt_idmap *, struct dentry *, struct posix_acl *, int);
int (*fileattr_set)(struct mnt_idmap *, struct dentry *, struct fileattr *);
int (*fileattr_get)(struct dentry *, struct fileattr *);
struct offset_ctx * (*get_offset_ctx)(struct inode *);
};
arm64: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
armhf: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
ppc64el: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
riscv64: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
aws: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
azure: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
gcp: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
lowlatency: ✅struct inode_operations {
struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
int (*permission)(struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink)(struct dentry *, char *, int);
int (*create)(struct inode *, struct dentry *, umode_t, bool);
int (*link)(struct dentry *, struct inode *, struct dentry *);
int (*unlink)(struct inode *, struct dentry *);
int (*symlink)(struct inode *, struct dentry *, const char *);
int (*mkdir)(struct inode *, struct dentry *, umode_t);
int (*rmdir)(struct inode *, struct dentry *);
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t);
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
int (*setattr)(struct dentry *, struct iattr *);
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int);
ssize_t (*listxattr)(struct dentry *, char *, size_t);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
int (*update_time)(struct inode *, struct timespec64 *, int);
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
int (*tmpfile)(struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int);
};
Regular
4.4 and 4.8 ⚠️const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *)
const char * (*follow_link)(struct dentry *, void **)
void (*put_link)(struct inode *, void *)
int (*setxattr)(struct dentry *, const char *, const void *, size_t, int) ➡️ int (*setxattr)(struct dentry *, struct inode *, const char *, const void *, size_t, int)
ssize_t (*getxattr)(struct dentry *, const char *, void *, size_t) ➡️ ssize_t (*getxattr)(struct dentry *, struct inode *, const char *, void *, size_t)
4.8 and 4.10 ⚠️int (*rename2)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int)
int (*setxattr)(struct dentry *, struct inode *, const char *, const void *, size_t, int)
ssize_t (*getxattr)(struct dentry *, struct inode *, const char *, void *, size_t)
int (*removexattr)(struct dentry *, const char *)
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *) ➡️ int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int)
4.10 and 4.13 ⚠️int (*getattr)(struct vfsmount *, struct dentry *, struct kstat *) ➡️ int (*getattr)(const struct path *, struct kstat *, u32, unsigned int)
4.13 and 4.15 ✅
4.15 and 4.18 ⚠️int (*update_time)(struct inode *, struct timespec *, int) ➡️ int (*update_time)(struct inode *, struct timespec64 *, int)
4.18 and 5.0 ⚠️int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t, int *) ➡️ int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t)
5.0 and 5.3 ✅
5.3 and 5.4 ✅
5.4 and 5.8 ✅
5.8 and 5.11 ✅
5.11 and 5.13 ⚠️int (*fileattr_set)(struct user_namespace *, struct dentry *, struct fileattr *)
int (*fileattr_get)(struct dentry *, struct fileattr *)
int (*permission)(struct inode *, int) ➡️ int (*permission)(struct user_namespace *, struct inode *, int)
int (*create)(struct inode *, struct dentry *, umode_t, bool) ➡️ int (*create)(struct user_namespace *, struct inode *, struct dentry *, umode_t, bool)
int (*symlink)(struct inode *, struct dentry *, const char *) ➡️ int (*symlink)(struct user_namespace *, struct inode *, struct dentry *, const char *)
int (*mkdir)(struct inode *, struct dentry *, umode_t) ➡️ int (*mkdir)(struct user_namespace *, struct inode *, struct dentry *, umode_t)
int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t) ➡️ int (*mknod)(struct user_namespace *, struct inode *, struct dentry *, umode_t, dev_t)
int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int) ➡️ int (*rename)(struct user_namespace *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int)
int (*setattr)(struct dentry *, struct iattr *) ➡️ int (*setattr)(struct user_namespace *, struct dentry *, struct iattr *)
int (*getattr)(const struct path *, struct kstat *, u32, unsigned int) ➡️ int (*getattr)(struct user_namespace *, const struct path *, struct kstat *, u32, unsigned int)
int (*tmpfile)(struct inode *, struct dentry *, umode_t) ➡️ int (*tmpfile)(struct user_namespace *, struct inode *, struct dentry *, umode_t)
int (*set_acl)(struct inode *, struct posix_acl *, int) ➡️ int (*set_acl)(struct user_namespace *, struct inode *, struct posix_acl *, int)
5.13 and 5.15 ⚠️struct posix_acl * (*get_acl)(struct inode *, int) ➡️ struct posix_acl * (*get_acl)(struct inode *, int, bool)
5.15 and 5.19 ✅
5.19 and 6.2 ⚠️struct posix_acl * (*get_inode_acl)(struct inode *, int, bool)
struct posix_acl * (*get_acl)(struct inode *, int, bool) ➡️ struct posix_acl * (*get_acl)(struct user_namespace *, struct dentry *, int)
int (*tmpfile)(struct user_namespace *, struct inode *, struct dentry *, umode_t) ➡️ int (*tmpfile)(struct user_namespace *, struct inode *, struct file *, umode_t)
int (*set_acl)(struct user_namespace *, struct inode *, struct posix_acl *, int) ➡️ int (*set_acl)(struct user_namespace *, struct dentry *, struct posix_acl *, int)
6.2 and 6.5 ⚠️int (*permission)(struct user_namespace *, struct inode *, int) ➡️ int (*permission)(struct mnt_idmap *, struct inode *, int)
int (*create)(struct user_namespace *, struct inode *, struct dentry *, umode_t, bool) ➡️ int (*create)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t, bool)
int (*symlink)(struct user_namespace *, struct inode *, struct dentry *, const char *) ➡️ int (*symlink)(struct mnt_idmap *, struct inode *, struct dentry *, const char *)
int (*mkdir)(struct user_namespace *, struct inode *, struct dentry *, umode_t) ➡️ int (*mkdir)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t)
int (*mknod)(struct user_namespace *, struct inode *, struct dentry *, umode_t, dev_t) ➡️ int (*mknod)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t, dev_t)
int (*rename)(struct user_namespace *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int) ➡️ int (*rename)(struct mnt_idmap *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int)
int (*setattr)(struct user_namespace *, struct dentry *, struct iattr *) ➡️ int (*setattr)(struct mnt_idmap *, struct dentry *, struct iattr *)
int (*getattr)(struct user_namespace *, const struct path *, struct kstat *, u32, unsigned int) ➡️ int (*getattr)(struct mnt_idmap *, const struct path *, struct kstat *, u32, unsigned int)
int (*tmpfile)(struct user_namespace *, struct inode *, struct file *, umode_t) ➡️ int (*tmpfile)(struct mnt_idmap *, struct inode *, struct file *, umode_t)
struct posix_acl * (*get_acl)(struct user_namespace *, struct dentry *, int) ➡️ struct posix_acl * (*get_acl)(struct mnt_idmap *, struct dentry *, int)
int (*set_acl)(struct user_namespace *, struct dentry *, struct posix_acl *, int) ➡️ int (*set_acl)(struct mnt_idmap *, struct dentry *, struct posix_acl *, int)
int (*fileattr_set)(struct user_namespace *, struct dentry *, struct fileattr *) ➡️ int (*fileattr_set)(struct mnt_idmap *, struct dentry *, struct fileattr *)
6.5 and 6.8 ⚠️struct offset_ctx * (*get_offset_ctx)(struct inode *)
int (*update_time)(struct inode *, struct timespec64 *, int) ➡️ int (*update_time)(struct inode *, 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 ✅