* Arguments to the open call.
*/
struct nfs_openargs {
- struct nfs_fh * fh;
+ const struct nfs_fh * fh;
__u32 seqid;
- __u32 share_access;
+ int open_flags;
__u64 clientid;
__u32 id;
- __u32 opentype;
- __u32 createmode;
union {
struct iattr * attrs; /* UNCHECKED, GUARDED */
nfs4_verifier verifier; /* EXCLUSIVE */
+ nfs4_stateid delegation; /* CLAIM_DELEGATE_CUR */
+ int delegation_type; /* CLAIM_PREVIOUS */
} u;
const struct qstr * name;
const struct nfs_server *server; /* Needed for ID mapping */
const u32 * bitmask;
+ __u32 claim;
};
struct nfs_openres {
__u32 rflags;
struct nfs_fattr * f_attr;
const struct nfs_server *server;
+ int delegation_type;
+ nfs4_stateid delegation;
+ __u32 do_recall;
+ __u64 maxsize;
};
/*
* Arguments to the open_confirm call.
*/
struct nfs_open_confirmargs {
- struct nfs_fh * fh;
+ const struct nfs_fh * fh;
nfs4_stateid stateid;
__u32 seqid;
};
nfs4_stateid stateid;
};
-/*
- * Arguments to the open_reclaim call.
- */
-struct nfs_open_reclaimargs {
- struct nfs_fh * fh;
- __u64 clientid;
- __u32 seqid;
- __u32 id;
- __u32 share_access;
- __u32 claim;
- const __u32 * bitmask;
-};
-
/*
* Arguments to the close call.
*/
struct nfs_fh * fh;
nfs4_stateid stateid;
__u32 seqid;
- __u32 share_access;
+ int open_flags;
};
struct nfs_closeres {
const struct nfs_server * server;
};
+struct nfs4_delegreturnargs {
+ const struct nfs_fh *fhandle;
+ const nfs4_stateid *stateid;
+};
+
/*
* Arguments to the read call.
*/
struct nfs_readargs {
struct nfs_fh * fh;
- fl_owner_t lockowner;
- struct nfs4_state * state;
+ struct nfs_open_context *context;
__u64 offset;
__u32 count;
unsigned int pgbase;
struct nfs_writeargs {
struct nfs_fh * fh;
- fl_owner_t lockowner;
- struct nfs4_state * state;
+ struct nfs_open_context *context;
__u64 offset;
__u32 count;
enum nfs3_stable_how stable;
struct nfs_readlinkargs {
struct nfs_fh * fh;
- unsigned int count;
+ unsigned int pgbase;
+ unsigned int pglen;
struct page ** pages;
};
struct nfs3_readlinkargs {
struct nfs_fh * fh;
- unsigned int count;
+ unsigned int pgbase;
+ unsigned int pglen;
struct page ** pages;
};
struct nfs4_readlink {
const struct nfs_fh * fh;
- u32 count; /* zero-copy data */
+ unsigned int pgbase;
+ unsigned int pglen; /* zero-copy data */
struct page ** pages; /* zero-copy data */
};
};
struct nfs4_setclientid {
- nfs4_verifier sc_verifier; /* request */
- char * sc_name; /* request */
+ const nfs4_verifier * sc_verifier; /* request */
+ unsigned int sc_name_len;
+ char sc_name[32]; /* request */
u32 sc_prog; /* request */
+ unsigned int sc_netid_len;
char sc_netid[4]; /* request */
+ unsigned int sc_uaddr_len;
char sc_uaddr[24]; /* request */
u32 sc_cb_ident; /* request */
- struct nfs4_client * sc_state; /* response */
};
struct nfs4_statfs_arg {
void (*complete) (struct nfs_write_data *, int);
};
+struct nfs_access_entry;
+
/*
* RPC procedure vector for NFSv2/NFSv3 demuxing
*/
int (*getroot) (struct nfs_server *, struct nfs_fh *,
struct nfs_fsinfo *);
- int (*getattr) (struct inode *, struct nfs_fattr *);
+ int (*getattr) (struct nfs_server *, struct nfs_fh *,
+ struct nfs_fattr *);
int (*setattr) (struct dentry *, struct nfs_fattr *,
struct iattr *);
int (*lookup) (struct inode *, struct qstr *,
struct nfs_fh *, struct nfs_fattr *);
- int (*access) (struct inode *, struct rpc_cred *, int);
- int (*readlink)(struct inode *, struct page *);
- int (*read) (struct nfs_read_data *, struct file *);
- int (*write) (struct nfs_write_data *, struct file *);
- int (*commit) (struct nfs_write_data *, struct file *);
+ int (*access) (struct inode *, struct nfs_access_entry *);
+ int (*readlink)(struct inode *, struct page *, unsigned int,
+ unsigned int);
+ int (*read) (struct nfs_read_data *);
+ int (*write) (struct nfs_write_data *);
+ int (*commit) (struct nfs_write_data *);
struct inode * (*create) (struct inode *, struct qstr *,
struct iattr *, int);
int (*remove) (struct inode *, struct qstr *);
void (*commit_setup) (struct nfs_write_data *, int how);
int (*file_open) (struct inode *, struct file *);
int (*file_release) (struct inode *, struct file *);
- void (*request_init)(struct nfs_page *, struct file *);
- int (*request_compatible)(struct nfs_page *, struct file *, struct page *);
int (*lock)(struct file *, int, struct file_lock *);
};