summaryrefslogtreecommitdiffstats
path: root/fs/nfsd/pnfs.h
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2016-03-04 20:46:17 +0100
committerJ. Bruce Fields <bfields@redhat.com>2016-03-18 11:42:53 -0400
commitf99d4fbdae6765d0bb4ed5441f6fa1f036122d59 (patch)
treeb2192caa11508d5107d2eea3be55c0ec68118e6c /fs/nfsd/pnfs.h
parent368248eeb14d08823f1b53de83debd5fd6c108d2 (diff)
downloadlinux-f99d4fbdae6765d0bb4ed5441f6fa1f036122d59.tar.bz2
nfsd: add SCSI layout support
This is a simple extension to the block layout driver to use SCSI persistent reservations for access control and fencing, as well as SCSI VPD pages for device identification. For this we need to pass the nfs4_client to the proc_getdeviceinfo method to generate the reservation key, and add a new fence_client method to allow for fence actions in the layout driver. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/pnfs.h')
-rw-r--r--fs/nfsd/pnfs.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/nfsd/pnfs.h b/fs/nfsd/pnfs.h
index ff50bfa1f76f..7d073b9b1553 100644
--- a/fs/nfsd/pnfs.h
+++ b/fs/nfsd/pnfs.h
@@ -21,6 +21,7 @@ struct nfsd4_layout_ops {
u32 notify_types;
__be32 (*proc_getdeviceinfo)(struct super_block *sb,
+ struct nfs4_client *clp,
struct nfsd4_getdeviceinfo *gdevp);
__be32 (*encode_getdeviceinfo)(struct xdr_stream *xdr,
struct nfsd4_getdeviceinfo *gdevp);
@@ -32,12 +33,17 @@ struct nfsd4_layout_ops {
__be32 (*proc_layoutcommit)(struct inode *inode,
struct nfsd4_layoutcommit *lcp);
+
+ void (*fence_client)(struct nfs4_layout_stateid *ls);
};
extern const struct nfsd4_layout_ops *nfsd4_layout_ops[];
#ifdef CONFIG_NFSD_BLOCKLAYOUT
extern const struct nfsd4_layout_ops bl_layout_ops;
#endif
+#ifdef CONFIG_NFSD_SCSILAYOUT
+extern const struct nfsd4_layout_ops scsi_layout_ops;
+#endif
__be32 nfsd4_preprocess_layout_stateid(struct svc_rqst *rqstp,
struct nfsd4_compound_state *cstate, stateid_t *stateid,