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 enc_referring_call4_sz (1 + 1) 10 #define enc_referring_call_list4_sz (sessionid_sz + 1 + \ 11 enc_referring_call4_sz) 12 #define cb_sequence_enc_sz (sessionid_sz + 4 + \ 13 enc_referring_call_list4_sz) 14 #define cb_sequence_dec_sz (op_dec_sz + sessionid_sz + 4) 15 16 #define op_enc_sz 1 17 #define op_dec_sz 2 18 #define enc_nfs4_fh_sz (1 + (NFS4_FHSIZE >> 2)) 19 #define enc_stateid_sz (NFS4_STATEID_SIZE >> 2) 20 #define NFS4_enc_cb_recall_sz (cb_compound_enc_hdr_sz + \ 21 cb_sequence_enc_sz + \ 22 1 + enc_stateid_sz + \ 23 enc_nfs4_fh_sz) 24 25 #define NFS4_dec_cb_recall_sz (cb_compound_dec_hdr_sz + \ 26 cb_sequence_dec_sz + \ 27 op_dec_sz) 28 #define NFS4_enc_cb_layout_sz (cb_compound_enc_hdr_sz + \ 29 cb_sequence_enc_sz + \ 30 1 + 3 + \ 31 enc_nfs4_fh_sz + 4) 32 #define NFS4_dec_cb_layout_sz (cb_compound_dec_hdr_sz + \ 33 cb_sequence_dec_sz + \ 34 op_dec_sz) 35 36 #define NFS4_enc_cb_notify_sz (cb_compound_enc_hdr_sz + \ 37 cb_sequence_enc_sz + \ 38 1 + enc_stateid_sz + \ 39 enc_nfs4_fh_sz + \ 40 1 + \ 41 NOTIFY4_EVENT_QUEUE_SIZE * \ 42 (2 + (NFS4_OPAQUE_LIMIT >> 2))) 43 44 #define NFS4_dec_cb_notify_sz (cb_compound_dec_hdr_sz + \ 45 cb_sequence_dec_sz + \ 46 op_dec_sz) 47 48 #define NFS4_enc_cb_notify_lock_sz (cb_compound_enc_hdr_sz + \ 49 cb_sequence_enc_sz + \ 50 2 + 1 + \ 51 XDR_QUADLEN(NFS4_OPAQUE_LIMIT) + \ 52 enc_nfs4_fh_sz) 53 #define NFS4_dec_cb_notify_lock_sz (cb_compound_dec_hdr_sz + \ 54 cb_sequence_dec_sz + \ 55 op_dec_sz) 56 #define enc_cb_offload_info_sz (1 + 1 + 2 + 1 + \ 57 XDR_QUADLEN(NFS4_VERIFIER_SIZE)) 58 #define NFS4_enc_cb_offload_sz (cb_compound_enc_hdr_sz + \ 59 cb_sequence_enc_sz + \ 60 enc_nfs4_fh_sz + \ 61 enc_stateid_sz + \ 62 enc_cb_offload_info_sz) 63 #define NFS4_dec_cb_offload_sz (cb_compound_dec_hdr_sz + \ 64 cb_sequence_dec_sz + \ 65 op_dec_sz) 66 #define NFS4_enc_cb_recall_any_sz (cb_compound_enc_hdr_sz + \ 67 cb_sequence_enc_sz + \ 68 1 + 1 + 1) 69 #define NFS4_dec_cb_recall_any_sz (cb_compound_dec_hdr_sz + \ 70 cb_sequence_dec_sz + \ 71 op_dec_sz) 72 73 /* 74 * 1: CB_GETATTR opcode (32-bit) 75 * N: file_handle 76 * 1: number of entry in attribute array (32-bit) 77 * 3: entry 0-2 in attribute array (32-bit * 3) 78 */ 79 #define NFS4_enc_cb_getattr_sz (cb_compound_enc_hdr_sz + \ 80 cb_sequence_enc_sz + \ 81 1 + enc_nfs4_fh_sz + 1 + 3) 82 /* 83 * 4: fattr_bitmap_maxsz 84 * 1: attribute array len 85 * 2: change attr (64-bit) 86 * 2: size (64-bit) 87 * 2: atime.seconds (64-bit) 88 * 1: atime.nanoseconds (32-bit) 89 * 2: mtime.seconds (64-bit) 90 * 1: mtime.nanoseconds (32-bit) 91 */ 92 #define NFS4_dec_cb_getattr_sz (cb_compound_dec_hdr_sz + \ 93 cb_sequence_dec_sz + 4 + 1 + 2 + 2 + 2 + 1 + 2 + 1 + op_dec_sz) 94