linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / include / linux / nfs_xdr.h
index 2426b11..6d6f69e 100644 (file)
 #define NFS_DEF_FILE_IO_SIZE   (4096U)
 #define NFS_MIN_FILE_IO_SIZE   (1024U)
 
-struct nfs_fsid {
-       uint64_t                major;
-       uint64_t                minor;
+struct nfs4_fsid {
+       __u64 major;
+       __u64 minor;
 };
 
-/*
- * Helper for checking equality between 2 fsids.
- */
-static inline int nfs_fsid_equal(const struct nfs_fsid *a, const struct nfs_fsid *b)
-{
-       return a->major == b->major && a->minor == b->minor;
-}
-
 struct nfs_fattr {
        unsigned short          valid;          /* which fields are valid */
        __u64                   pre_size;       /* pre_op_attr.size       */
@@ -48,7 +40,10 @@ struct nfs_fattr {
                } nfs3;
        } du;
        dev_t                   rdev;
-       struct nfs_fsid         fsid;
+       union {
+               __u64           nfs3;           /* also nfs2 */
+               struct nfs4_fsid nfs4;
+       } fsid_u;
        __u64                   fileid;
        struct timespec         atime;
        struct timespec         mtime;
@@ -62,8 +57,8 @@ struct nfs_fattr {
 #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 */
+#define NFS_ATTR_FATTR_V4      0x0008
+#define NFS_ATTR_PRE_CHANGE    0x0010
 
 /*
  * Info on the file system
@@ -659,7 +654,7 @@ struct nfs4_rename_res {
 struct nfs4_setclientid {
        const nfs4_verifier *           sc_verifier;      /* request */
        unsigned int                    sc_name_len;
-       char                            sc_name[48];      /* request */
+       char                            sc_name[32];      /* request */
        u32                             sc_prog;          /* request */
        unsigned int                    sc_netid_len;
        char                            sc_netid[4];      /* request */
@@ -680,40 +675,6 @@ struct nfs4_server_caps_res {
        u32                             has_symlinks;
 };
 
-struct nfs4_string {
-       unsigned int len;
-       char *data;
-};
-
-#define NFS4_PATHNAME_MAXCOMPONENTS 512
-struct nfs4_pathname {
-       unsigned int ncomponents;
-       struct nfs4_string components[NFS4_PATHNAME_MAXCOMPONENTS];
-};
-
-#define NFS4_FS_LOCATION_MAXSERVERS 10
-struct nfs4_fs_location {
-       unsigned int nservers;
-       struct nfs4_string servers[NFS4_FS_LOCATION_MAXSERVERS];
-       struct nfs4_pathname rootpath;
-};
-
-#define NFS4_FS_LOCATIONS_MAXENTRIES 10
-struct nfs4_fs_locations {
-       struct nfs_fattr fattr;
-       const struct nfs_server *server;
-       struct nfs4_pathname fs_path;
-       int nlocations;
-       struct nfs4_fs_location locations[NFS4_FS_LOCATIONS_MAXENTRIES];
-};
-
-struct nfs4_fs_locations_arg {
-       const struct nfs_fh *dir_fh;
-       const struct qstr *name;
-       struct page *page;
-       const u32 *bitmask;
-};
-
 #endif /* CONFIG_NFS_V4 */
 
 struct nfs_page;
@@ -729,13 +690,13 @@ struct nfs_read_data {
        struct list_head        pages;  /* Coalesced read requests */
        struct nfs_page         *req;   /* multi ops per nfs_page */
        struct page             **pagevec;
-       unsigned int            npages; /* Max length of pagevec */
        struct nfs_readargs args;
        struct nfs_readres  res;
 #ifdef CONFIG_NFS_V4
        unsigned long           timestamp;      /* For lease renewal */
 #endif
-       struct page             *page_array[NFS_PAGEVEC_SIZE];
+       void (*complete) (struct nfs_read_data *, int);
+       struct page             *page_array[NFS_PAGEVEC_SIZE + 1];
 };
 
 struct nfs_write_data {
@@ -748,13 +709,13 @@ struct nfs_write_data {
        struct list_head        pages;          /* Coalesced requests we wish to flush */
        struct nfs_page         *req;           /* multi ops per nfs_page */
        struct page             **pagevec;
-       unsigned int            npages;         /* Max length of pagevec */
        struct nfs_writeargs    args;           /* argument struct */
        struct nfs_writeres     res;            /* result struct */
 #ifdef CONFIG_NFS_V4
        unsigned long           timestamp;      /* For lease renewal */
 #endif
-       struct page             *page_array[NFS_PAGEVEC_SIZE];
+       void (*complete) (struct nfs_write_data *, int);
+       struct page             *page_array[NFS_PAGEVEC_SIZE + 1];
 };
 
 struct nfs_access_entry;
@@ -770,9 +731,6 @@ struct nfs_rpc_ops {
 
        int     (*getroot) (struct nfs_server *, struct nfs_fh *,
                            struct nfs_fsinfo *);
-       int     (*lookupfh)(struct nfs_server *, struct nfs_fh *,
-                           struct qstr *, struct nfs_fh *,
-                           struct nfs_fattr *);
        int     (*getattr) (struct nfs_server *, struct nfs_fh *,
                            struct nfs_fattr *);
        int     (*setattr) (struct dentry *, struct nfs_fattr *,
@@ -809,14 +767,10 @@ struct nfs_rpc_ops {
                            struct nfs_fsinfo *);
        int     (*pathconf) (struct nfs_server *, struct nfs_fh *,
                             struct nfs_pathconf *);
-       int     (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
        u32 *   (*decode_dirent)(u32 *, struct nfs_entry *, int plus);
        void    (*read_setup)   (struct nfs_read_data *);
-       int     (*read_done)  (struct rpc_task *, struct nfs_read_data *);
        void    (*write_setup)  (struct nfs_write_data *, int how);
-       int     (*write_done)  (struct rpc_task *, struct nfs_write_data *);
        void    (*commit_setup) (struct nfs_write_data *, int how);
-       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 *);
@@ -833,9 +787,9 @@ struct nfs_rpc_ops {
 /*
  * Function vectors etc. for the NFS client
  */
-extern const struct nfs_rpc_ops        nfs_v2_clientops;
-extern const struct nfs_rpc_ops        nfs_v3_clientops;
-extern const struct nfs_rpc_ops        nfs_v4_clientops;
+extern struct nfs_rpc_ops      nfs_v2_clientops;
+extern struct nfs_rpc_ops      nfs_v3_clientops;
+extern struct nfs_rpc_ops      nfs_v4_clientops;
 extern struct rpc_version      nfs_version2;
 extern struct rpc_version      nfs_version3;
 extern struct rpc_version      nfs_version4;