• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/fs/nfs/
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
15enum nfs4_callback_procnum {
16	CB_NULL = 0,
17	CB_COMPOUND = 1,
18};
19
20enum nfs4_callback_opnum {
21	OP_CB_GETATTR = 3,
22	OP_CB_RECALL  = 4,
23/* Callback operations new to NFSv4.1 */
24	OP_CB_LAYOUTRECALL  = 5,
25	OP_CB_NOTIFY        = 6,
26	OP_CB_PUSH_DELEG    = 7,
27	OP_CB_RECALL_ANY    = 8,
28	OP_CB_RECALLABLE_OBJ_AVAIL = 9,
29	OP_CB_RECALL_SLOT   = 10,
30	OP_CB_SEQUENCE      = 11,
31	OP_CB_WANTS_CANCELLED = 12,
32	OP_CB_NOTIFY_LOCK   = 13,
33	OP_CB_NOTIFY_DEVICEID = 14,
34	OP_CB_ILLEGAL = 10044,
35};
36
37struct cb_compound_hdr_arg {
38	unsigned int taglen;
39	const char *tag;
40	unsigned int minorversion;
41	unsigned nops;
42};
43
44struct cb_compound_hdr_res {
45	__be32 *status;
46	unsigned int taglen;
47	const char *tag;
48	__be32 *nops;
49};
50
51struct cb_getattrargs {
52	struct sockaddr *addr;
53	struct nfs_fh fh;
54	uint32_t bitmap[2];
55};
56
57struct cb_getattrres {
58	__be32 status;
59	uint32_t bitmap[2];
60	uint64_t size;
61	uint64_t change_attr;
62	struct timespec ctime;
63	struct timespec mtime;
64};
65
66struct cb_recallargs {
67	struct sockaddr *addr;
68	struct nfs_fh fh;
69	nfs4_stateid stateid;
70	uint32_t truncate;
71};
72
73#if defined(CONFIG_NFS_V4_1)
74
75struct referring_call {
76	uint32_t			rc_sequenceid;
77	uint32_t			rc_slotid;
78};
79
80struct referring_call_list {
81	struct nfs4_sessionid		rcl_sessionid;
82	uint32_t			rcl_nrefcalls;
83	struct referring_call 		*rcl_refcalls;
84};
85
86struct cb_sequenceargs {
87	struct sockaddr			*csa_addr;
88	struct nfs4_sessionid		csa_sessionid;
89	uint32_t			csa_sequenceid;
90	uint32_t			csa_slotid;
91	uint32_t			csa_highestslotid;
92	uint32_t			csa_cachethis;
93	uint32_t			csa_nrclists;
94	struct referring_call_list	*csa_rclists;
95};
96
97struct cb_sequenceres {
98	__be32				csr_status;
99	struct nfs4_sessionid		csr_sessionid;
100	uint32_t			csr_sequenceid;
101	uint32_t			csr_slotid;
102	uint32_t			csr_highestslotid;
103	uint32_t			csr_target_highestslotid;
104};
105
106extern unsigned nfs4_callback_sequence(struct cb_sequenceargs *args,
107				       struct cb_sequenceres *res);
108
109extern int nfs41_validate_delegation_stateid(struct nfs_delegation *delegation,
110					     const nfs4_stateid *stateid);
111
112#define RCA4_TYPE_MASK_RDATA_DLG	0
113#define RCA4_TYPE_MASK_WDATA_DLG	1
114
115struct cb_recallanyargs {
116	struct sockaddr	*craa_addr;
117	uint32_t	craa_objs_to_keep;
118	uint32_t	craa_type_mask;
119};
120
121extern unsigned nfs4_callback_recallany(struct cb_recallanyargs *args, void *dummy);
122
123struct cb_recallslotargs {
124	struct sockaddr	*crsa_addr;
125	uint32_t	crsa_target_max_slots;
126};
127extern unsigned nfs4_callback_recallslot(struct cb_recallslotargs *args,
128					  void *dummy);
129
130#endif /* CONFIG_NFS_V4_1 */
131
132extern __be32 nfs4_callback_getattr(struct cb_getattrargs *args, struct cb_getattrres *res);
133extern __be32 nfs4_callback_recall(struct cb_recallargs *args, void *dummy);
134
135#ifdef CONFIG_NFS_V4
136extern int nfs_callback_up(u32 minorversion, struct rpc_xprt *xprt);
137extern void nfs_callback_down(int minorversion);
138extern int nfs4_validate_delegation_stateid(struct nfs_delegation *delegation,
139					    const nfs4_stateid *stateid);
140#endif /* CONFIG_NFS_V4 */
141/*
142 * nfs41: Callbacks are expected to not cause substantial latency,
143 * so we limit their concurrency to 1 by setting up the maximum number
144 * of slots for the backchannel.
145 */
146#define NFS41_BC_MIN_CALLBACKS 1
147#define NFS41_BC_MAX_CALLBACKS 1
148
149extern unsigned int nfs_callback_set_tcpport;
150extern unsigned short nfs_callback_tcpport;
151extern unsigned short nfs_callback_tcpport6;
152
153#endif /* __LINUX_FS_NFS_CALLBACK_H */
154