root/fs/nfsd/blocklayoutxdr.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */