nfsd: Fix independence of a few nfsd related headers
[safe/jmp/linux-2.6] / include / linux / nfs_xdr.h
index 768c1ad..00a0c81 100644 (file)
@@ -2,6 +2,7 @@
 #define _LINUX_NFS_XDR_H
 
 #include <linux/nfsacl.h>
+#include <linux/nfs3.h>
 
 /*
  * To change the maximum rsize and wsize supported by the NFS client, adjust
@@ -27,15 +28,12 @@ static inline int nfs_fsid_equal(const struct nfs_fsid *a, const struct nfs_fsid
 }
 
 struct nfs_fattr {
-       unsigned short          valid;          /* which fields are valid */
-       __u64                   pre_size;       /* pre_op_attr.size       */
-       struct timespec         pre_mtime;      /* pre_op_attr.mtime      */
-       struct timespec         pre_ctime;      /* pre_op_attr.ctime      */
-       enum nfs_ftype          type;           /* always use NFSv2 types */
-       __u32                   mode;
+       unsigned int            valid;          /* which fields are valid */
+       umode_t                 mode;
        __u32                   nlink;
        __u32                   uid;
        __u32                   gid;
+       dev_t                   rdev;
        __u64                   size;
        union {
                struct {
@@ -46,23 +44,60 @@ struct nfs_fattr {
                        __u64   used;
                } nfs3;
        } du;
-       dev_t                   rdev;
        struct nfs_fsid         fsid;
        __u64                   fileid;
        struct timespec         atime;
        struct timespec         mtime;
        struct timespec         ctime;
-       __u32                   bitmap[2];      /* NFSv4 returned attribute bitmap */
        __u64                   change_attr;    /* NFSv4 change attribute */
        __u64                   pre_change_attr;/* pre-op NFSv4 change attribute */
+       __u64                   pre_size;       /* pre_op_attr.size       */
+       struct timespec         pre_mtime;      /* pre_op_attr.mtime      */
+       struct timespec         pre_ctime;      /* pre_op_attr.ctime      */
        unsigned long           time_start;
-};
-
-#define NFS_ATTR_WCC           0x0001          /* pre-op WCC data    */
-#define NFS_ATTR_FATTR         0x0002          /* post-op attributes */
-#define NFS_ATTR_FATTR_V3      0x0004          /* NFSv3 attributes */
-#define NFS_ATTR_FATTR_V4      0x0008          /* NFSv4 change attribute */
-#define NFS_ATTR_FATTR_V4_REFERRAL     0x0010          /* NFSv4 referral */
+       unsigned long           gencount;
+};
+
+#define NFS_ATTR_FATTR_TYPE            (1U << 0)
+#define NFS_ATTR_FATTR_MODE            (1U << 1)
+#define NFS_ATTR_FATTR_NLINK           (1U << 2)
+#define NFS_ATTR_FATTR_OWNER           (1U << 3)
+#define NFS_ATTR_FATTR_GROUP           (1U << 4)
+#define NFS_ATTR_FATTR_RDEV            (1U << 5)
+#define NFS_ATTR_FATTR_SIZE            (1U << 6)
+#define NFS_ATTR_FATTR_PRESIZE         (1U << 7)
+#define NFS_ATTR_FATTR_BLOCKS_USED     (1U << 8)
+#define NFS_ATTR_FATTR_SPACE_USED      (1U << 9)
+#define NFS_ATTR_FATTR_FSID            (1U << 10)
+#define NFS_ATTR_FATTR_FILEID          (1U << 11)
+#define NFS_ATTR_FATTR_ATIME           (1U << 12)
+#define NFS_ATTR_FATTR_MTIME           (1U << 13)
+#define NFS_ATTR_FATTR_CTIME           (1U << 14)
+#define NFS_ATTR_FATTR_PREMTIME                (1U << 15)
+#define NFS_ATTR_FATTR_PRECTIME                (1U << 16)
+#define NFS_ATTR_FATTR_CHANGE          (1U << 17)
+#define NFS_ATTR_FATTR_PRECHANGE       (1U << 18)
+#define NFS_ATTR_FATTR_V4_REFERRAL     (1U << 19)      /* NFSv4 referral */
+
+#define NFS_ATTR_FATTR (NFS_ATTR_FATTR_TYPE \
+               | NFS_ATTR_FATTR_MODE \
+               | NFS_ATTR_FATTR_NLINK \
+               | NFS_ATTR_FATTR_OWNER \
+               | NFS_ATTR_FATTR_GROUP \
+               | NFS_ATTR_FATTR_RDEV \
+               | NFS_ATTR_FATTR_SIZE \
+               | NFS_ATTR_FATTR_FSID \
+               | NFS_ATTR_FATTR_FILEID \
+               | NFS_ATTR_FATTR_ATIME \
+               | NFS_ATTR_FATTR_MTIME \
+               | NFS_ATTR_FATTR_CTIME)
+#define NFS_ATTR_FATTR_V2 (NFS_ATTR_FATTR \
+               | NFS_ATTR_FATTR_BLOCKS_USED)
+#define NFS_ATTR_FATTR_V3 (NFS_ATTR_FATTR \
+               | NFS_ATTR_FATTR_SPACE_USED)
+#define NFS_ATTR_FATTR_V4 (NFS_ATTR_FATTR \
+               | NFS_ATTR_FATTR_SPACE_USED \
+               | NFS_ATTR_FATTR_CHANGE)
 
 /*
  * Info on the file system
@@ -111,6 +146,44 @@ struct nfs4_change_info {
 };
 
 struct nfs_seqid;
+
+/* nfs41 sessions channel attributes */
+struct nfs4_channel_attrs {
+       u32                     headerpadsz;
+       u32                     max_rqst_sz;
+       u32                     max_resp_sz;
+       u32                     max_resp_sz_cached;
+       u32                     max_ops;
+       u32                     max_reqs;
+};
+
+/* nfs41 sessions slot seqid */
+struct nfs4_slot {
+       u32                     seq_nr;
+};
+
+struct nfs4_sequence_args {
+       struct nfs4_session     *sa_session;
+       u8                      sa_slotid;
+       u8                      sa_cache_this;
+};
+
+struct nfs4_sequence_res {
+       struct nfs4_session     *sr_session;
+       u8                      sr_slotid;      /* slot used to send request */
+       unsigned long           sr_renewal_time;
+       int                     sr_status;      /* sequence operation status */
+};
+
+struct nfs4_get_lease_time_args {
+       struct nfs4_sequence_args       la_seq_args;
+};
+
+struct nfs4_get_lease_time_res {
+       struct nfs_fsinfo              *lr_fsinfo;
+       struct nfs4_sequence_res        lr_seq_res;
+};
+
 /*
  * Arguments to the open call.
  */
@@ -118,18 +191,20 @@ struct nfs_openargs {
        const struct nfs_fh *   fh;
        struct nfs_seqid *      seqid;
        int                     open_flags;
+       fmode_t                 fmode;
        __u64                   clientid;
-       __u32                   id;
+       __u64                   id;
        union {
                struct iattr *  attrs;    /* UNCHECKED, GUARDED */
                nfs4_verifier   verifier; /* EXCLUSIVE */
                nfs4_stateid    delegation;             /* CLAIM_DELEGATE_CUR */
-               int             delegation_type;        /* CLAIM_PREVIOUS */
+               fmode_t         delegation_type;        /* CLAIM_PREVIOUS */
        } u;
        const struct qstr *     name;
        const struct nfs_server *server;         /* Needed for ID mapping */
        const u32 *             bitmask;
        __u32                   claim;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs_openres {
@@ -139,11 +214,14 @@ struct nfs_openres {
        __u32                   rflags;
        struct nfs_fattr *      f_attr;
        struct nfs_fattr *      dir_attr;
+       struct nfs_seqid *      seqid;
        const struct nfs_server *server;
-       int                     delegation_type;
+       fmode_t                 delegation_type;
        nfs4_stateid            delegation;
        __u32                   do_recall;
        __u64                   maxsize;
+       __u32                   attrset[NFS4_BITMAP_SIZE];
+       struct nfs4_sequence_res        seq_res;
 };
 
 /*
@@ -157,6 +235,7 @@ struct nfs_open_confirmargs {
 
 struct nfs_open_confirmres {
        nfs4_stateid            stateid;
+       struct nfs_seqid *      seqid;
 };
 
 /*
@@ -166,21 +245,24 @@ struct nfs_closeargs {
        struct nfs_fh *         fh;
        nfs4_stateid *          stateid;
        struct nfs_seqid *      seqid;
-       int                     open_flags;
+       fmode_t                 fmode;
        const u32 *             bitmask;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs_closeres {
        nfs4_stateid            stateid;
        struct nfs_fattr *      fattr;
+       struct nfs_seqid *      seqid;
        const struct nfs_server *server;
+       struct nfs4_sequence_res        seq_res;
 };
 /*
  *  * Arguments to the lock,lockt, and locku call.
  *   */
 struct nfs_lowner {
        __u64                   clientid;
-       u32                     id;
+       __u64                   id;
 };
 
 struct nfs_lock_args {
@@ -194,10 +276,14 @@ struct nfs_lock_args {
        unsigned char           block : 1;
        unsigned char           reclaim : 1;
        unsigned char           new_lock_owner : 1;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs_lock_res {
-       nfs4_stateid                    stateid;
+       nfs4_stateid            stateid;
+       struct nfs_seqid *      lock_seqid;
+       struct nfs_seqid *      open_seqid;
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs_locku_args {
@@ -205,31 +291,38 @@ struct nfs_locku_args {
        struct file_lock *      fl;
        struct nfs_seqid *      seqid;
        nfs4_stateid *          stateid;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs_locku_res {
-       nfs4_stateid                    stateid;
+       nfs4_stateid            stateid;
+       struct nfs_seqid *      seqid;
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs_lockt_args {
        struct nfs_fh *         fh;
        struct file_lock *      fl;
        struct nfs_lowner       lock_owner;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs_lockt_res {
        struct file_lock *      denied; /* LOCK, LOCKT failed */
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs4_delegreturnargs {
        const struct nfs_fh *fhandle;
        const nfs4_stateid *stateid;
        const u32 * bitmask;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs4_delegreturnres {
        struct nfs_fattr * fattr;
        const struct nfs_server *server;
+       struct nfs4_sequence_res        seq_res;
 };
 
 /*
@@ -242,12 +335,14 @@ struct nfs_readargs {
        __u32                   count;
        unsigned int            pgbase;
        struct page **          pages;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs_readres {
        struct nfs_fattr *      fattr;
        __u32                   count;
        int                     eof;
+       struct nfs4_sequence_res        seq_res;
 };
 
 /*
@@ -262,6 +357,7 @@ struct nfs_writeargs {
        unsigned int            pgbase;
        struct page **          pages;
        const u32 *             bitmask;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs_writeverf {
@@ -274,6 +370,24 @@ struct nfs_writeres {
        struct nfs_writeverf *  verf;
        __u32                   count;
        const struct nfs_server *server;
+       struct nfs4_sequence_res        seq_res;
+};
+
+/*
+ * Common arguments to the unlink call
+ */
+struct nfs_removeargs {
+       const struct nfs_fh     *fh;
+       struct qstr             name;
+       const u32 *             bitmask;
+       struct nfs4_sequence_args       seq_args;
+};
+
+struct nfs_removeres {
+       const struct nfs_server *server;
+       struct nfs4_change_info cinfo;
+       struct nfs_fattr        dir_attr;
+       struct nfs4_sequence_res        seq_res;
 };
 
 /*
@@ -326,6 +440,7 @@ struct nfs_setattrargs {
        struct iattr *                  iap;
        const struct nfs_server *       server; /* Needed for name mapping */
        const u32 *                     bitmask;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs_setaclargs {
@@ -333,6 +448,11 @@ struct nfs_setaclargs {
        size_t                          acl_len;
        unsigned int                    acl_pgbase;
        struct page **                  acl_pages;
+       struct nfs4_sequence_args       seq_args;
+};
+
+struct nfs_setaclres {
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs_getaclargs {
@@ -340,11 +460,18 @@ struct nfs_getaclargs {
        size_t                          acl_len;
        unsigned int                    acl_pgbase;
        struct page **                  acl_pages;
+       struct nfs4_sequence_args       seq_args;
+};
+
+struct nfs_getaclres {
+       size_t                          acl_len;
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs_setattrres {
        struct nfs_fattr *              fattr;
        const struct nfs_server *       server;
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs_linkargs {
@@ -381,6 +508,8 @@ struct nfs3_setaclargs {
        int                     mask;
        struct posix_acl *      acl_access;
        struct posix_acl *      acl_default;
+       size_t                  len;
+       unsigned int            npages;
        struct page **          pages;
 };
 
@@ -522,12 +651,17 @@ typedef u64 clientid4;
 
 struct nfs4_accessargs {
        const struct nfs_fh *           fh;
+       const u32 *                     bitmask;
        u32                             access;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs4_accessres {
+       const struct nfs_server *       server;
+       struct nfs_fattr *              fattr;
        u32                             supported;
        u32                             access;
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs4_create_arg {
@@ -547,6 +681,7 @@ struct nfs4_create_arg {
        const struct iattr *            attrs;
        const struct nfs_fh *           dir_fh;
        const u32 *                     bitmask;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs4_create_res {
@@ -555,21 +690,30 @@ struct nfs4_create_res {
        struct nfs_fattr *              fattr;
        struct nfs4_change_info         dir_cinfo;
        struct nfs_fattr *              dir_fattr;
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs4_fsinfo_arg {
        const struct nfs_fh *           fh;
        const u32 *                     bitmask;
+       struct nfs4_sequence_args       seq_args;
+};
+
+struct nfs4_fsinfo_res {
+       struct nfs_fsinfo              *fsinfo;
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs4_getattr_arg {
        const struct nfs_fh *           fh;
        const u32 *                     bitmask;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs4_getattr_res {
        const struct nfs_server *       server;
        struct nfs_fattr *              fattr;
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs4_link_arg {
@@ -577,6 +721,7 @@ struct nfs4_link_arg {
        const struct nfs_fh *           dir_fh;
        const struct qstr *             name;
        const u32 *                     bitmask;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs4_link_res {
@@ -584,6 +729,7 @@ struct nfs4_link_res {
        struct nfs_fattr *              fattr;
        struct nfs4_change_info         cinfo;
        struct nfs_fattr *              dir_attr;
+       struct nfs4_sequence_res        seq_res;
 };
 
 
@@ -591,21 +737,30 @@ struct nfs4_lookup_arg {
        const struct nfs_fh *           dir_fh;
        const struct qstr *             name;
        const u32 *                     bitmask;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs4_lookup_res {
        const struct nfs_server *       server;
        struct nfs_fattr *              fattr;
        struct nfs_fh *                 fh;
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs4_lookup_root_arg {
        const u32 *                     bitmask;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs4_pathconf_arg {
        const struct nfs_fh *           fh;
        const u32 *                     bitmask;
+       struct nfs4_sequence_args       seq_args;
+};
+
+struct nfs4_pathconf_res {
+       struct nfs_pathconf            *pathconf;
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs4_readdir_arg {
@@ -616,11 +771,13 @@ struct nfs4_readdir_arg {
        struct page **                  pages;  /* zero-copy data */
        unsigned int                    pgbase; /* zero-copy data */
        const u32 *                     bitmask;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs4_readdir_res {
        nfs4_verifier                   verifier;
        unsigned int                    pgbase;
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs4_readlink {
@@ -628,18 +785,11 @@ struct nfs4_readlink {
        unsigned int                    pgbase;
        unsigned int                    pglen;   /* zero-copy data */
        struct page **                  pages;   /* zero-copy data */
+       struct nfs4_sequence_args       seq_args;
 };
 
-struct nfs4_remove_arg {
-       const struct nfs_fh *           fh;
-       const struct qstr *             name;
-       const u32 *                     bitmask;
-};
-
-struct nfs4_remove_res {
-       const struct nfs_server *       server;
-       struct nfs4_change_info         cinfo;
-       struct nfs_fattr *              dir_attr;
+struct nfs4_readlink_res {
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs4_rename_arg {
@@ -648,6 +798,7 @@ struct nfs4_rename_arg {
        const struct qstr *             old_name;
        const struct qstr *             new_name;
        const u32 *                     bitmask;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs4_rename_res {
@@ -656,23 +807,36 @@ struct nfs4_rename_res {
        struct nfs_fattr *              old_fattr;
        struct nfs4_change_info         new_cinfo;
        struct nfs_fattr *              new_fattr;
+       struct nfs4_sequence_res        seq_res;
 };
 
+#define NFS4_SETCLIENTID_NAMELEN       (127)
 struct nfs4_setclientid {
-       const nfs4_verifier *           sc_verifier;      /* request */
+       const nfs4_verifier *           sc_verifier;
        unsigned int                    sc_name_len;
-       char                            sc_name[48];      /* request */
-       u32                             sc_prog;          /* request */
+       char                            sc_name[NFS4_SETCLIENTID_NAMELEN + 1];
+       u32                             sc_prog;
        unsigned int                    sc_netid_len;
-       char                            sc_netid[4];      /* request */
+       char                            sc_netid[RPCBIND_MAXNETIDLEN + 1];
        unsigned int                    sc_uaddr_len;
-       char                            sc_uaddr[24];     /* request */
-       u32                             sc_cb_ident;      /* request */
+       char                            sc_uaddr[RPCBIND_MAXUADDRLEN + 1];
+       u32                             sc_cb_ident;
 };
 
 struct nfs4_statfs_arg {
        const struct nfs_fh *           fh;
        const u32 *                     bitmask;
+       struct nfs4_sequence_args       seq_args;
+};
+
+struct nfs4_statfs_res {
+       struct nfs_fsstat              *fsstat;
+       struct nfs4_sequence_res        seq_res;
+};
+
+struct nfs4_server_caps_arg {
+       struct nfs_fh                  *fhandle;
+       struct nfs4_sequence_args       seq_args;
 };
 
 struct nfs4_server_caps_res {
@@ -680,6 +844,7 @@ struct nfs4_server_caps_res {
        u32                             acl_bitmask;
        u32                             has_links;
        u32                             has_symlinks;
+       struct nfs4_sequence_res        seq_res;
 };
 
 struct nfs4_string {
@@ -714,10 +879,68 @@ struct nfs4_fs_locations_arg {
        const struct qstr *name;
        struct page *page;
        const u32 *bitmask;
+       struct nfs4_sequence_args       seq_args;
+};
+
+struct nfs4_fs_locations_res {
+       struct nfs4_fs_locations       *fs_locations;
+       struct nfs4_sequence_res        seq_res;
 };
 
 #endif /* CONFIG_NFS_V4 */
 
+struct nfstime4 {
+       u64     seconds;
+       u32     nseconds;
+};
+
+#ifdef CONFIG_NFS_V4_1
+struct nfs_impl_id4 {
+       u32             domain_len;
+       char            *domain;
+       u32             name_len;
+       char            *name;
+       struct nfstime4 date;
+};
+
+#define NFS4_EXCHANGE_ID_LEN   (48)
+struct nfs41_exchange_id_args {
+       struct nfs_client               *client;
+       nfs4_verifier                   *verifier;
+       unsigned int                    id_len;
+       char                            id[NFS4_EXCHANGE_ID_LEN];
+       u32                             flags;
+};
+
+struct server_owner {
+       uint64_t                        minor_id;
+       uint32_t                        major_id_sz;
+       char                            major_id[NFS4_OPAQUE_LIMIT];
+};
+
+struct server_scope {
+       uint32_t                        server_scope_sz;
+       char                            server_scope[NFS4_OPAQUE_LIMIT];
+};
+
+struct nfs41_exchange_id_res {
+       struct nfs_client               *client;
+       u32                             flags;
+};
+
+struct nfs41_create_session_args {
+       struct nfs_client              *client;
+       uint32_t                        flags;
+       uint32_t                        cb_program;
+       struct nfs4_channel_attrs       fc_attrs;       /* Fore Channel */
+       struct nfs4_channel_attrs       bc_attrs;       /* Back Channel */
+};
+
+struct nfs41_create_session_res {
+       struct nfs_client              *client;
+};
+#endif /* CONFIG_NFS_V4_1 */
+
 struct nfs_page;
 
 #define NFS_PAGEVEC_SIZE       (8U)
@@ -765,10 +988,10 @@ struct nfs_access_entry;
  * RPC procedure vector for NFSv2/NFSv3 demuxing
  */
 struct nfs_rpc_ops {
-       int     version;                /* Protocol version */
-       struct dentry_operations *dentry_ops;
-       struct inode_operations *dir_inode_ops;
-       struct inode_operations *file_inode_ops;
+       u32     version;                /* Protocol version */
+       const struct dentry_operations *dentry_ops;
+       const struct inode_operations *dir_inode_ops;
+       const struct inode_operations *file_inode_ops;
 
        int     (*getroot) (struct nfs_server *, struct nfs_fh *,
                            struct nfs_fsinfo *);
@@ -784,15 +1007,11 @@ struct nfs_rpc_ops {
        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 *);
        int     (*create)  (struct inode *, struct dentry *,
                            struct iattr *, int, struct nameidata *);
        int     (*remove)  (struct inode *, struct qstr *);
-       int     (*unlink_setup)  (struct rpc_message *,
-                           struct dentry *, struct qstr *);
-       int     (*unlink_done) (struct dentry *, struct rpc_task *);
+       void    (*unlink_setup)  (struct rpc_message *, struct inode *dir);
+       int     (*unlink_done) (struct rpc_task *, struct inode *);
        int     (*rename)  (struct inode *, struct qstr *,
                            struct inode *, struct qstr *);
        int     (*link)    (struct inode *, struct inode *, struct qstr *);
@@ -812,16 +1031,16 @@ struct nfs_rpc_ops {
                             struct nfs_pathconf *);
        int     (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
        __be32 *(*decode_dirent)(__be32 *, struct nfs_entry *, int plus);
-       void    (*read_setup)   (struct nfs_read_data *);
+       void    (*read_setup)   (struct nfs_read_data *, struct rpc_message *);
        int     (*read_done)  (struct rpc_task *, struct nfs_read_data *);
-       void    (*write_setup)  (struct nfs_write_data *, int how);
+       void    (*write_setup)  (struct nfs_write_data *, struct rpc_message *);
        int     (*write_done)  (struct rpc_task *, struct nfs_write_data *);
-       void    (*commit_setup) (struct nfs_write_data *, int how);
+       void    (*commit_setup) (struct nfs_write_data *, struct rpc_message *);
        int     (*commit_done) (struct rpc_task *, struct nfs_write_data *);
-       int     (*file_open)   (struct inode *, struct file *);
-       int     (*file_release) (struct inode *, struct file *);
        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 *ctx, int);
 };
 
 /*