nfs_rpc_ops
Regular
4.4
: Absent ⚠️
4.8
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, const struct qstr *);
void (*unlink_setup)(struct rpc_message *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct inode *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, struct rpc_cred *, u64, struct page **, unsigned int, int);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, int);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
int (*return_delegation)(struct inode *);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
4.10
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, const struct qstr *);
void (*unlink_setup)(struct rpc_message *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct inode *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, struct rpc_cred *, u64, struct page **, unsigned int, int);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, int);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
int (*return_delegation)(struct inode *);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
4.13
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, const struct qstr *);
void (*unlink_setup)(struct rpc_message *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct inode *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, struct rpc_cred *, u64, struct page **, unsigned int, bool);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
int (*return_delegation)(struct inode *);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
4.15
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, const struct qstr *);
void (*unlink_setup)(struct rpc_message *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct inode *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, struct rpc_cred *, u64, struct page **, unsigned int, bool);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
int (*return_delegation)(struct inode *);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
4.18
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, struct rpc_cred *, u64, struct page **, unsigned int, bool);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
5.0
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, const struct cred *, u64, struct page **, unsigned int, bool);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
5.3
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, const struct cred *, u64, struct page **, unsigned int, bool);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
5.4
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, const struct cred *, u64, struct page **, unsigned int, bool);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
5.8
: Absent ⚠️
5.11
: Absent ⚠️
5.13
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*submount)(struct fs_context *, struct nfs_server *);
int (*try_get_tree)(struct fs_context *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, struct dentry *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct nfs_readdir_arg *, struct nfs_readdir_res *);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct fs_context *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
5.15
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*submount)(struct fs_context *, struct nfs_server *);
int (*try_get_tree)(struct fs_context *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, struct dentry *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct nfs_readdir_arg *, struct nfs_readdir_res *);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct fs_context *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
int (*discover_trunking)(struct nfs_server *, struct nfs_fh *);
};
5.19
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*submount)(struct fs_context *, struct nfs_server *);
int (*try_get_tree)(struct fs_context *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *);
int (*access)(struct inode *, struct nfs_access_entry *, const struct cred *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct nfs_readdir_arg *, struct nfs_readdir_res *);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct fs_context *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
int (*discover_trunking)(struct nfs_server *, struct nfs_fh *);
void (*enable_swap)(struct inode *);
void (*disable_swap)(struct inode *);
};
6.2
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*submount)(struct fs_context *, struct nfs_server *);
int (*try_get_tree)(struct fs_context *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *);
int (*access)(struct inode *, struct nfs_access_entry *, const struct cred *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct nfs_readdir_arg *, struct nfs_readdir_res *);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct fs_context *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
int (*discover_trunking)(struct nfs_server *, struct nfs_fh *);
void (*enable_swap)(struct inode *);
void (*disable_swap)(struct inode *);
};
6.5
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*submount)(struct fs_context *, struct nfs_server *);
int (*try_get_tree)(struct fs_context *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *);
int (*access)(struct inode *, struct nfs_access_entry *, const struct cred *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct nfs_readdir_arg *, struct nfs_readdir_res *);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct fs_context *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
int (*discover_trunking)(struct nfs_server *, struct nfs_fh *);
void (*enable_swap)(struct inode *);
void (*disable_swap)(struct inode *);
};
6.8
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*submount)(struct fs_context *, struct nfs_server *);
int (*try_get_tree)(struct fs_context *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *);
int (*access)(struct inode *, struct nfs_access_entry *, const struct cred *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct folio *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct nfs_readdir_arg *, struct nfs_readdir_res *);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct fs_context *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
int (*discover_trunking)(struct nfs_server *, struct nfs_fh *);
void (*enable_swap)(struct inode *);
void (*disable_swap)(struct inode *);
};
arm64
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, const struct cred *, u64, struct page **, unsigned int, bool);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
armhf
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, const struct cred *, u64, struct page **, unsigned int, bool);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
ppc64el
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, const struct cred *, u64, struct page **, unsigned int, bool);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
riscv64
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, const struct cred *, u64, struct page **, unsigned int, bool);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
aws
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, const struct cred *, u64, struct page **, unsigned int, bool);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
azure
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, const struct cred *, u64, struct page **, unsigned int, bool);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
gcp
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, const struct cred *, u64, struct page **, unsigned int, bool);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
lowlatency
: ✅struct nfs_rpc_ops {
u32 version;
const struct dentry_operations *dentry_ops;
const struct inode_operations *dir_inode_ops;
const struct inode_operations *file_inode_ops;
const struct file_operations *file_ops;
const struct nlmclnt_operations *nlmclnt_ops;
int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
struct vfsmount * (*submount)(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *);
struct dentry * (*try_mount)(int, const char *, struct nfs_mount_info *, struct nfs_subversion *);
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *);
int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *);
int (*lookup)(struct inode *, const struct qstr *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *);
int (*access)(struct inode *, struct nfs_access_entry *);
int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int);
int (*create)(struct inode *, struct dentry *, struct iattr *, int);
int (*remove)(struct inode *, struct dentry *);
void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *);
void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *);
int (*unlink_done)(struct rpc_task *, struct inode *);
void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *);
void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *);
int (*rename_done)(struct rpc_task *, struct inode *, struct inode *);
int (*link)(struct inode *, struct inode *, const struct qstr *);
int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *);
int (*mkdir)(struct inode *, struct dentry *, struct iattr *);
int (*rmdir)(struct inode *, const struct qstr *);
int (*readdir)(struct dentry *, const struct cred *, u64, struct page **, unsigned int, bool);
int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t);
int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *);
int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *);
int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *);
void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
int (*read_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **);
int (*write_done)(struct rpc_task *, struct nfs_pgio_header *);
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **);
void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
int (*commit_done)(struct rpc_task *, struct nfs_commit_data *);
int (*lock)(struct file *, int, struct file_lock *);
int (*lock_check_bounds)(const struct file_lock *);
void (*clear_acl_cache)(struct inode *);
void (*close_context)(struct nfs_open_context *, int);
struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *);
int (*have_delegation)(struct inode *, fmode_t);
struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *);
struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *);
void (*free_client)(struct nfs_client *);
struct nfs_server * (*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t);
};
Regular
4.8
and 4.10
✅
4.10
and 4.13
⚠️const struct nlmclnt_operations *nlmclnt_ops
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *)
int (*readdir)(struct dentry *, struct rpc_cred *, u64, struct page **, unsigned int, int)
➡️ int (*readdir)(struct dentry *, struct rpc_cred *, u64, struct page **, unsigned int, bool)
int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, int)
➡️ int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool)
4.13
and 4.15
✅
4.15
and 4.18
⚠️int (*return_delegation)(struct inode *)
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *)
➡️ int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *)
int (*remove)(struct inode *, const struct qstr *)
➡️ int (*remove)(struct inode *, struct dentry *)
void (*unlink_setup)(struct rpc_message *, struct inode *)
➡️ void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *)
void (*rename_setup)(struct rpc_message *, struct inode *)
➡️ void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *)
void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *)
➡️ void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **)
void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *)
➡️ void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **)
4.18
and 5.0
⚠️int (*readdir)(struct dentry *, struct rpc_cred *, u64, struct page **, unsigned int, bool)
➡️ int (*readdir)(struct dentry *, const struct cred *, u64, struct page **, unsigned int, bool)
5.0
and 5.3
✅
5.3
and 5.4
✅
5.13
and 5.15
⚠️int (*discover_trunking)(struct nfs_server *, struct nfs_fh *)
5.15
and 5.19
⚠️void (*enable_swap)(struct inode *)
void (*disable_swap)(struct inode *)
int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *)
➡️ int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct inode *)
int (*lookup)(struct inode *, struct dentry *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *)
➡️ int (*lookup)(struct inode *, struct dentry *, struct nfs_fh *, struct nfs_fattr *)
int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *)
➡️ int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *)
int (*access)(struct inode *, struct nfs_access_entry *)
➡️ int (*access)(struct inode *, struct nfs_access_entry *, const struct cred *)
5.19
and 6.2
✅
6.2
and 6.5
✅
6.5
and 6.8
⚠️int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *)
➡️ int (*symlink)(struct inode *, struct dentry *, struct folio *, unsigned int, struct iattr *)
amd64
and arm64
✅
amd64
and armhf
✅
amd64
and ppc64el
✅
amd64
and riscv64
✅
generic
and aws
✅
generic
and azure
✅
generic
and gcp
✅
generic
and lowlatency
✅