flexfilelayoutxdr.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Copyright (c) 2016 Tom Haynes <loghyr@primarydata.com>
  4. */
  5. #ifndef _NFSD_FLEXFILELAYOUTXDR_H
  6. #define _NFSD_FLEXFILELAYOUTXDR_H 1
  7. #include <linux/inet.h>
  8. #include "xdr4.h"
  9. #define FF_FLAGS_NO_LAYOUTCOMMIT 1
  10. #define FF_FLAGS_NO_IO_THRU_MDS 2
  11. #define FF_FLAGS_NO_READ_IO 4
  12. struct xdr_stream;
  13. #define FF_NETID_LEN (4)
  14. #define FF_ADDR_LEN (INET6_ADDRSTRLEN + 8)
  15. struct pnfs_ff_netaddr {
  16. char netid[FF_NETID_LEN + 1];
  17. char addr[FF_ADDR_LEN + 1];
  18. u32 netid_len;
  19. u32 addr_len;
  20. };
  21. struct pnfs_ff_device_addr {
  22. struct pnfs_ff_netaddr netaddr;
  23. u32 version;
  24. u32 minor_version;
  25. u32 rsize;
  26. u32 wsize;
  27. bool tightly_coupled;
  28. };
  29. struct pnfs_ff_layout {
  30. u32 flags;
  31. u32 stats_collect_hint;
  32. kuid_t uid;
  33. kgid_t gid;
  34. struct nfsd4_deviceid deviceid;
  35. stateid_t stateid;
  36. struct nfs_fh fh;
  37. };
  38. __be32 nfsd4_ff_encode_getdeviceinfo(struct xdr_stream *xdr,
  39. struct nfsd4_getdeviceinfo *gdp);
  40. __be32 nfsd4_ff_encode_layoutget(struct xdr_stream *xdr,
  41. struct nfsd4_layoutget *lgp);
  42. #endif /* _NFSD_FLEXFILELAYOUTXDR_H */