0001
0002
0003
0004
0005 #ifndef _NFSD_FLEXFILELAYOUTXDR_H
0006 #define _NFSD_FLEXFILELAYOUTXDR_H 1
0007
0008 #include <linux/inet.h>
0009 #include "xdr4.h"
0010
0011 #define FF_FLAGS_NO_LAYOUTCOMMIT 1
0012 #define FF_FLAGS_NO_IO_THRU_MDS 2
0013 #define FF_FLAGS_NO_READ_IO 4
0014
0015 struct xdr_stream;
0016
0017 #define FF_NETID_LEN (4)
0018 #define FF_ADDR_LEN (INET6_ADDRSTRLEN + 8)
0019 struct pnfs_ff_netaddr {
0020 char netid[FF_NETID_LEN + 1];
0021 char addr[FF_ADDR_LEN + 1];
0022 u32 netid_len;
0023 u32 addr_len;
0024 };
0025
0026 struct pnfs_ff_device_addr {
0027 struct pnfs_ff_netaddr netaddr;
0028 u32 version;
0029 u32 minor_version;
0030 u32 rsize;
0031 u32 wsize;
0032 bool tightly_coupled;
0033 };
0034
0035 struct pnfs_ff_layout {
0036 u32 flags;
0037 u32 stats_collect_hint;
0038 kuid_t uid;
0039 kgid_t gid;
0040 struct nfsd4_deviceid deviceid;
0041 stateid_t stateid;
0042 struct nfs_fh fh;
0043 };
0044
0045 __be32 nfsd4_ff_encode_getdeviceinfo(struct xdr_stream *xdr,
0046 struct nfsd4_getdeviceinfo *gdp);
0047 __be32 nfsd4_ff_encode_layoutget(struct xdr_stream *xdr,
0048 struct nfsd4_layoutget *lgp);
0049
0050 #endif