xdr4cb.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #define NFS4_MAXTAGLEN 20
  3. #define NFS4_enc_cb_null_sz 0
  4. #define NFS4_dec_cb_null_sz 0
  5. #define cb_compound_enc_hdr_sz 4
  6. #define cb_compound_dec_hdr_sz (3 + (NFS4_MAXTAGLEN >> 2))
  7. #define sessionid_sz (NFS4_MAX_SESSIONID_LEN >> 2)
  8. #define enc_referring_call4_sz (1 + 1)
  9. #define enc_referring_call_list4_sz (sessionid_sz + 1 + \
  10. enc_referring_call4_sz)
  11. #define cb_sequence_enc_sz (sessionid_sz + 4 + \
  12. enc_referring_call_list4_sz)
  13. #define cb_sequence_dec_sz (op_dec_sz + sessionid_sz + 4)
  14. #define op_enc_sz 1
  15. #define op_dec_sz 2
  16. #define enc_nfs4_fh_sz (1 + (NFS4_FHSIZE >> 2))
  17. #define enc_stateid_sz (NFS4_STATEID_SIZE >> 2)
  18. #define NFS4_enc_cb_recall_sz (cb_compound_enc_hdr_sz + \
  19. cb_sequence_enc_sz + \
  20. 1 + enc_stateid_sz + \
  21. enc_nfs4_fh_sz)
  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. #define NFS4_enc_cb_notify_lock_sz (cb_compound_enc_hdr_sz + \
  33. cb_sequence_enc_sz + \
  34. 2 + 1 + \
  35. XDR_QUADLEN(NFS4_OPAQUE_LIMIT) + \
  36. enc_nfs4_fh_sz)
  37. #define NFS4_dec_cb_notify_lock_sz (cb_compound_dec_hdr_sz + \
  38. cb_sequence_dec_sz + \
  39. op_dec_sz)
  40. #define enc_cb_offload_info_sz (1 + 1 + 2 + 1 + \
  41. XDR_QUADLEN(NFS4_VERIFIER_SIZE))
  42. #define NFS4_enc_cb_offload_sz (cb_compound_enc_hdr_sz + \
  43. cb_sequence_enc_sz + \
  44. enc_nfs4_fh_sz + \
  45. enc_stateid_sz + \
  46. enc_cb_offload_info_sz)
  47. #define NFS4_dec_cb_offload_sz (cb_compound_dec_hdr_sz + \
  48. cb_sequence_dec_sz + \
  49. op_dec_sz)
  50. #define NFS4_enc_cb_recall_any_sz (cb_compound_enc_hdr_sz + \
  51. cb_sequence_enc_sz + \
  52. 1 + 1 + 1)
  53. #define NFS4_dec_cb_recall_any_sz (cb_compound_dec_hdr_sz + \
  54. cb_sequence_dec_sz + \
  55. op_dec_sz)
  56. /*
  57. * 1: CB_GETATTR opcode (32-bit)
  58. * N: file_handle
  59. * 1: number of entry in attribute array (32-bit)
  60. * 3: entry 0-2 in attribute array (32-bit * 3)
  61. */
  62. #define NFS4_enc_cb_getattr_sz (cb_compound_enc_hdr_sz + \
  63. cb_sequence_enc_sz + \
  64. 1 + enc_nfs4_fh_sz + 1 + 3)
  65. /*
  66. * 4: fattr_bitmap_maxsz
  67. * 1: attribute array len
  68. * 2: change attr (64-bit)
  69. * 2: size (64-bit)
  70. * 2: atime.seconds (64-bit)
  71. * 1: atime.nanoseconds (32-bit)
  72. * 2: mtime.seconds (64-bit)
  73. * 1: mtime.nanoseconds (32-bit)
  74. */
  75. #define NFS4_dec_cb_getattr_sz (cb_compound_dec_hdr_sz + \
  76. cb_sequence_dec_sz + 4 + 1 + 2 + 2 + 2 + 1 + 2 + 1 + op_dec_sz)