| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame] | 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 |  | 
 | 8 | #include <linux/inet.h> | 
 | 9 | #include "xdr4.h" | 
 | 10 |  | 
 | 11 | #define FF_FLAGS_NO_LAYOUTCOMMIT 1 | 
 | 12 | #define FF_FLAGS_NO_IO_THRU_MDS  2 | 
 | 13 | #define FF_FLAGS_NO_READ_IO      4 | 
 | 14 |  | 
 | 15 | struct xdr_stream; | 
 | 16 |  | 
 | 17 | #define FF_NETID_LEN		(4) | 
 | 18 | #define FF_ADDR_LEN		(INET6_ADDRSTRLEN + 8) | 
 | 19 | struct pnfs_ff_netaddr { | 
 | 20 | 	char				netid[FF_NETID_LEN + 1]; | 
 | 21 | 	char				addr[FF_ADDR_LEN + 1]; | 
 | 22 | 	u32				netid_len; | 
 | 23 | 	u32				addr_len; | 
 | 24 | }; | 
 | 25 |  | 
 | 26 | struct pnfs_ff_device_addr { | 
 | 27 | 	struct pnfs_ff_netaddr		netaddr; | 
 | 28 | 	u32				version; | 
 | 29 | 	u32				minor_version; | 
 | 30 | 	u32				rsize; | 
 | 31 | 	u32				wsize; | 
 | 32 | 	bool				tightly_coupled; | 
 | 33 | }; | 
 | 34 |  | 
 | 35 | struct pnfs_ff_layout { | 
 | 36 | 	u32				flags; | 
 | 37 | 	u32				stats_collect_hint; | 
 | 38 | 	kuid_t				uid; | 
 | 39 | 	kgid_t				gid; | 
 | 40 | 	struct nfsd4_deviceid		deviceid; | 
 | 41 | 	stateid_t			stateid; | 
 | 42 | 	struct nfs_fh			fh; | 
 | 43 | }; | 
 | 44 |  | 
 | 45 | __be32 nfsd4_ff_encode_getdeviceinfo(struct xdr_stream *xdr, | 
 | 46 | 		struct nfsd4_getdeviceinfo *gdp); | 
 | 47 | __be32 nfsd4_ff_encode_layoutget(struct xdr_stream *xdr, | 
 | 48 | 		struct nfsd4_layoutget *lgp); | 
 | 49 |  | 
 | 50 | #endif /* _NFSD_FLEXFILELAYOUTXDR_H */ |