xref: /linux/fs/nfsd/xdr4cb.h (revision 79790b6818e96c58fe2bffee1b418c16e64e7b80)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #define NFS4_MAXTAGLEN		20
3 
4 #define NFS4_enc_cb_null_sz		0
5 #define NFS4_dec_cb_null_sz		0
6 #define cb_compound_enc_hdr_sz		4
7 #define cb_compound_dec_hdr_sz		(3 + (NFS4_MAXTAGLEN >> 2))
8 #define sessionid_sz			(NFS4_MAX_SESSIONID_LEN >> 2)
9 #define cb_sequence_enc_sz		(sessionid_sz + 4 +             \
10 					1 /* no referring calls list yet */)
11 #define cb_sequence_dec_sz		(op_dec_sz + sessionid_sz + 4)
12 
13 #define op_enc_sz			1
14 #define op_dec_sz			2
15 #define enc_nfs4_fh_sz			(1 + (NFS4_FHSIZE >> 2))
16 #define enc_stateid_sz			(NFS4_STATEID_SIZE >> 2)
17 #define NFS4_enc_cb_recall_sz		(cb_compound_enc_hdr_sz +       \
18 					cb_sequence_enc_sz +            \
19 					1 + enc_stateid_sz +            \
20 					enc_nfs4_fh_sz)
21 
22 #define NFS4_dec_cb_recall_sz		(cb_compound_dec_hdr_sz  +      \
23 					cb_sequence_dec_sz +            \
24 					op_dec_sz)
25 #define NFS4_enc_cb_layout_sz		(cb_compound_enc_hdr_sz +       \
26 					cb_sequence_enc_sz +            \
27 					1 + 3 +                         \
28 					enc_nfs4_fh_sz + 4)
29 #define NFS4_dec_cb_layout_sz		(cb_compound_dec_hdr_sz  +      \
30 					cb_sequence_dec_sz +            \
31 					op_dec_sz)
32 
33 #define NFS4_enc_cb_notify_lock_sz	(cb_compound_enc_hdr_sz +        \
34 					cb_sequence_enc_sz +             \
35 					2 + 1 +				 \
36 					XDR_QUADLEN(NFS4_OPAQUE_LIMIT) + \
37 					enc_nfs4_fh_sz)
38 #define NFS4_dec_cb_notify_lock_sz	(cb_compound_dec_hdr_sz  +      \
39 					cb_sequence_dec_sz +            \
40 					op_dec_sz)
41 #define enc_cb_offload_info_sz		(1 + 1 + 2 + 1 +		\
42 					XDR_QUADLEN(NFS4_VERIFIER_SIZE))
43 #define NFS4_enc_cb_offload_sz		(cb_compound_enc_hdr_sz +       \
44 					cb_sequence_enc_sz +            \
45 					enc_nfs4_fh_sz +		\
46 					enc_stateid_sz +		\
47 					enc_cb_offload_info_sz)
48 #define NFS4_dec_cb_offload_sz		(cb_compound_dec_hdr_sz  +      \
49 					cb_sequence_dec_sz +            \
50 					op_dec_sz)
51 #define NFS4_enc_cb_recall_any_sz	(cb_compound_enc_hdr_sz +       \
52 					cb_sequence_enc_sz +            \
53 					1 + 1 + 1)
54 #define NFS4_dec_cb_recall_any_sz	(cb_compound_dec_hdr_sz  +      \
55 					cb_sequence_dec_sz +            \
56 					op_dec_sz)
57 
58 /*
59  * 1: CB_GETATTR opcode (32-bit)
60  * N: file_handle
61  * 1: number of entry in attribute array (32-bit)
62  * 1: entry 0 in attribute array (32-bit)
63  */
64 #define NFS4_enc_cb_getattr_sz		(cb_compound_enc_hdr_sz +       \
65 					cb_sequence_enc_sz +            \
66 					1 + enc_nfs4_fh_sz + 1 + 1)
67 /*
68  * 4: fattr_bitmap_maxsz
69  * 1: attribute array len
70  * 2: change attr (64-bit)
71  * 2: size (64-bit)
72  */
73 #define NFS4_dec_cb_getattr_sz		(cb_compound_dec_hdr_sz  +      \
74 			cb_sequence_dec_sz + 4 + 1 + 2 + 2 + op_dec_sz)
75