Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.5.6.
 1#ifndef _NFSD_BLOCKLAYOUTXDR_H
 2#define _NFSD_BLOCKLAYOUTXDR_H 1
 3
 4#include <linux/blkdev.h>
 5#include "xdr4.h"
 6
 7struct iomap;
 8struct xdr_stream;
 9
10struct pnfs_block_extent {
11	struct nfsd4_deviceid		vol_id;
12	u64				foff;
13	u64				len;
14	u64				soff;
15	enum pnfs_block_extent_state	es;
16};
17
18struct pnfs_block_range {
19	u64				foff;
20	u64				len;
21};
22
23/*
24 * Random upper cap for the uuid length to avoid unbounded allocation.
25 * Not actually limited by the protocol.
26 */
27#define PNFS_BLOCK_UUID_LEN	128
28
29struct pnfs_block_volume {
30	enum pnfs_block_volume_type	type;
31	union {
32		struct {
33			u64		offset;
34			u32		sig_len;
35			u8		sig[PNFS_BLOCK_UUID_LEN];
36		} simple;
37		struct {
38			enum scsi_code_set		code_set;
39			enum scsi_designator_type	designator_type;
40			int				designator_len;
41			u8				designator[256];
42			u64				pr_key;
43		} scsi;
44	};
45};
46
47struct pnfs_block_deviceaddr {
48	u32				nr_volumes;
49	struct pnfs_block_volume	volumes[];
50};
51
52__be32 nfsd4_block_encode_getdeviceinfo(struct xdr_stream *xdr,
53		struct nfsd4_getdeviceinfo *gdp);
54__be32 nfsd4_block_encode_layoutget(struct xdr_stream *xdr,
55		struct nfsd4_layoutget *lgp);
56int nfsd4_block_decode_layoutupdate(__be32 *p, u32 len, struct iomap **iomapp,
57		u32 block_size);
58int nfsd4_scsi_decode_layoutupdate(__be32 *p, u32 len, struct iomap **iomapp,
59		u32 block_size);
60
61#endif /* _NFSD_BLOCKLAYOUTXDR_H */