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_lock_sz (cb_compound_enc_hdr_sz + \ 37 cb_sequence_enc_sz + \ 38 2 + 1 + \ 39 XDR_QUADLEN(NFS4_OPAQUE_LIMIT) + \ 40 enc_nfs4_fh_sz) 41 #define NFS4_dec_cb_notify_lock_sz (cb_compound_dec_hdr_sz + \ 42 cb_sequence_dec_sz + \ 43 op_dec_sz) 44 #define enc_cb_offload_info_sz (1 + 1 + 2 + 1 + \ 45 XDR_QUADLEN(NFS4_VERIFIER_SIZE)) 46 #define NFS4_enc_cb_offload_sz (cb_compound_enc_hdr_sz + \ 47 cb_sequence_enc_sz + \ 48 enc_nfs4_fh_sz + \ 49 enc_stateid_sz + \ 50 enc_cb_offload_info_sz) 51 #define NFS4_dec_cb_offload_sz (cb_compound_dec_hdr_sz + \ 52 cb_sequence_dec_sz + \ 53 op_dec_sz) 54 #define NFS4_enc_cb_recall_any_sz (cb_compound_enc_hdr_sz + \ 55 cb_sequence_enc_sz + \ 56 1 + 1 + 1) 57 #define NFS4_dec_cb_recall_any_sz (cb_compound_dec_hdr_sz + \ 58 cb_sequence_dec_sz + \ 59 op_dec_sz) 60 61 /* 62 * 1: CB_GETATTR opcode (32-bit) 63 * N: file_handle 64 * 1: number of entry in attribute array (32-bit) 65 * 3: entry 0-2 in attribute array (32-bit * 3) 66 */ 67 #define NFS4_enc_cb_getattr_sz (cb_compound_enc_hdr_sz + \ 68 cb_sequence_enc_sz + \ 69 1 + enc_nfs4_fh_sz + 1 + 3) 70 /* 71 * 4: fattr_bitmap_maxsz 72 * 1: attribute array len 73 * 2: change attr (64-bit) 74 * 2: size (64-bit) 75 * 2: atime.seconds (64-bit) 76 * 1: atime.nanoseconds (32-bit) 77 * 2: mtime.seconds (64-bit) 78 * 1: mtime.nanoseconds (32-bit) 79 */ 80 #define NFS4_dec_cb_getattr_sz (cb_compound_dec_hdr_sz + \ 81 cb_sequence_dec_sz + 4 + 1 + 2 + 2 + 2 + 1 + 2 + 1 + op_dec_sz) 82