51b15c2d3a56a05da31805fefb94a693f0d4f49e
[pandora-kernel.git] / fs / nfs / callback.h
1 /*
2  * linux/fs/nfs/callback.h
3  *
4  * Copyright (C) 2004 Trond Myklebust
5  *
6  * NFSv4 callback definitions
7  */
8 #ifndef __LINUX_FS_NFS_CALLBACK_H
9 #define __LINUX_FS_NFS_CALLBACK_H
10
11 #define NFS4_CALLBACK 0x40000000
12 #define NFS4_CALLBACK_XDRSIZE 2048
13 #define NFS4_CALLBACK_BUFSIZE (1024 + NFS4_CALLBACK_XDRSIZE)
14
15 enum nfs4_callback_procnum {
16         CB_NULL = 0,
17         CB_COMPOUND = 1,
18 };
19
20 enum nfs4_callback_opnum {
21         OP_CB_GETATTR = 3,
22         OP_CB_RECALL  = 4,
23         OP_CB_ILLEGAL = 10044,
24 };
25
26 struct cb_compound_hdr_arg {
27         unsigned int taglen;
28         const char *tag;
29         unsigned int minorversion;
30         unsigned int callback_ident;
31         unsigned nops;
32 };
33
34 struct cb_compound_hdr_res {
35         __be32 *status;
36         unsigned int taglen;
37         const char *tag;
38         __be32 *nops;
39 };
40
41 struct cb_getattrargs {
42         struct sockaddr *addr;
43         struct nfs_fh fh;
44         uint32_t bitmap[2];
45 };
46
47 struct cb_getattrres {
48         __be32 status;
49         uint32_t bitmap[2];
50         uint64_t size;
51         uint64_t change_attr;
52         struct timespec ctime;
53         struct timespec mtime;
54 };
55
56 struct cb_recallargs {
57         struct sockaddr *addr;
58         struct nfs_fh fh;
59         nfs4_stateid stateid;
60         uint32_t truncate;
61 };
62
63 extern __be32 nfs4_callback_getattr(struct cb_getattrargs *args, struct cb_getattrres *res);
64 extern __be32 nfs4_callback_recall(struct cb_recallargs *args, void *dummy);
65
66 #ifdef CONFIG_NFS_V4
67 extern int nfs_callback_up(u32 minorversion, struct rpc_xprt *xprt);
68 extern void nfs_callback_down(int minorversion);
69 #endif /* CONFIG_NFS_V4 */
70
71 /*
72  * nfs41: Callbacks are expected to not cause substantial latency,
73  * so we limit their concurrency to 1 by setting up the maximum number
74  * of slots for the backchannel.
75  */
76 #define NFS41_BC_MIN_CALLBACKS 1
77
78 extern unsigned int nfs_callback_set_tcpport;
79 extern unsigned short nfs_callback_tcpport;
80 extern unsigned short nfs_callback_tcpport6;
81
82 #endif /* __LINUX_FS_NFS_CALLBACK_H */