Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable
[safe/jmp/linux-2.6] / fs / nfs / callback.h
index 80fd8a8..85a7cfd 100644 (file)
@@ -70,20 +70,81 @@ struct cb_recallargs {
        uint32_t truncate;
 };
 
+#if defined(CONFIG_NFS_V4_1)
+
+struct referring_call {
+       uint32_t                        rc_sequenceid;
+       uint32_t                        rc_slotid;
+};
+
+struct referring_call_list {
+       struct nfs4_sessionid           rcl_sessionid;
+       uint32_t                        rcl_nrefcalls;
+       struct referring_call           *rcl_refcalls;
+};
+
+struct cb_sequenceargs {
+       struct sockaddr                 *csa_addr;
+       struct nfs4_sessionid           csa_sessionid;
+       uint32_t                        csa_sequenceid;
+       uint32_t                        csa_slotid;
+       uint32_t                        csa_highestslotid;
+       uint32_t                        csa_cachethis;
+       uint32_t                        csa_nrclists;
+       struct referring_call_list      *csa_rclists;
+};
+
+struct cb_sequenceres {
+       __be32                          csr_status;
+       struct nfs4_sessionid           csr_sessionid;
+       uint32_t                        csr_sequenceid;
+       uint32_t                        csr_slotid;
+       uint32_t                        csr_highestslotid;
+       uint32_t                        csr_target_highestslotid;
+};
+
+extern unsigned nfs4_callback_sequence(struct cb_sequenceargs *args,
+                                      struct cb_sequenceres *res);
+
+extern int nfs41_validate_delegation_stateid(struct nfs_delegation *delegation,
+                                            const nfs4_stateid *stateid);
+
+#define RCA4_TYPE_MASK_RDATA_DLG       0
+#define RCA4_TYPE_MASK_WDATA_DLG       1
+
+struct cb_recallanyargs {
+       struct sockaddr *craa_addr;
+       uint32_t        craa_objs_to_keep;
+       uint32_t        craa_type_mask;
+};
+
+extern unsigned nfs4_callback_recallany(struct cb_recallanyargs *args, void *dummy);
+
+struct cb_recallslotargs {
+       struct sockaddr *crsa_addr;
+       uint32_t        crsa_target_max_slots;
+};
+extern unsigned nfs4_callback_recallslot(struct cb_recallslotargs *args,
+                                         void *dummy);
+
+#endif /* CONFIG_NFS_V4_1 */
+
 extern __be32 nfs4_callback_getattr(struct cb_getattrargs *args, struct cb_getattrres *res);
 extern __be32 nfs4_callback_recall(struct cb_recallargs *args, void *dummy);
 
 #ifdef CONFIG_NFS_V4
 extern int nfs_callback_up(u32 minorversion, struct rpc_xprt *xprt);
 extern void nfs_callback_down(int minorversion);
+extern int nfs4_validate_delegation_stateid(struct nfs_delegation *delegation,
+                                           const nfs4_stateid *stateid);
 #endif /* CONFIG_NFS_V4 */
-
 /*
  * nfs41: Callbacks are expected to not cause substantial latency,
  * so we limit their concurrency to 1 by setting up the maximum number
  * of slots for the backchannel.
  */
 #define NFS41_BC_MIN_CALLBACKS 1
+#define NFS41_BC_MAX_CALLBACKS 1
 
 extern unsigned int nfs_callback_set_tcpport;
 extern unsigned short nfs_callback_tcpport;