Merge tag 'input-for-v6.10-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-block.git] / fs / nfsd / xdr4cb.h
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)