linux/fs/nfsd/blocklayoutxdr.h
<<
>>
Prefs
   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 */
  62