nfsd: add a new config option for the block layout driver
Split the config symbols into a generic pNFS one, which is invisible and gets selected by the layout drivers, and one for the block layout driver. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
d9186c0397
commit
81c3932901
@ -84,12 +84,17 @@ config NFSD_V4
|
||||
If unsure, say N.
|
||||
|
||||
config NFSD_PNFS
|
||||
bool "NFSv4.1 server support for Parallel NFS (pNFS)"
|
||||
bool
|
||||
|
||||
config NFSD_BLOCKLAYOUT
|
||||
bool "NFSv4.1 server support for pNFS block layouts"
|
||||
depends on NFSD_V4
|
||||
select NFSD_PNFS
|
||||
help
|
||||
This option enables support for the parallel NFS features of the
|
||||
minor version 1 of the NFSv4 protocol (RFC5661) in the kernel's NFS
|
||||
server.
|
||||
This option enables support for the exporting pNFS block layouts
|
||||
in the kernel's NFS server. The pNFS block layout enables NFS
|
||||
clients to directly perform I/O to block devices accesible to both
|
||||
the server and the clients. See RFC 5663 for more details.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
|
@ -17,4 +17,5 @@ nfsd-$(CONFIG_NFSD_V3) += nfs3proc.o nfs3xdr.o
|
||||
nfsd-$(CONFIG_NFSD_V3_ACL) += nfs3acl.o
|
||||
nfsd-$(CONFIG_NFSD_V4) += nfs4proc.o nfs4xdr.o nfs4state.o nfs4idmap.o \
|
||||
nfs4acl.o nfs4callback.o nfs4recover.o
|
||||
nfsd-$(CONFIG_NFSD_PNFS) += nfs4layouts.o blocklayout.o blocklayoutxdr.o
|
||||
nfsd-$(CONFIG_NFSD_PNFS) += nfs4layouts.o
|
||||
nfsd-$(CONFIG_NFSD_BLOCKLAYOUT) += blocklayout.o blocklayoutxdr.o
|
||||
|
@ -26,7 +26,9 @@ static const struct nfsd4_callback_ops nfsd4_cb_layout_ops;
|
||||
static const struct lock_manager_operations nfsd4_layouts_lm_ops;
|
||||
|
||||
const struct nfsd4_layout_ops *nfsd4_layout_ops[LAYOUT_TYPE_MAX] = {
|
||||
#ifdef CONFIG_NFSD_BLOCKLAYOUT
|
||||
[LAYOUT_BLOCK_VOLUME] = &bl_layout_ops,
|
||||
#endif
|
||||
};
|
||||
|
||||
/* pNFS device ID to export fsid mapping */
|
||||
@ -121,10 +123,12 @@ void nfsd4_setup_layout_type(struct svc_export *exp)
|
||||
if (!(exp->ex_flags & NFSEXP_PNFS))
|
||||
return;
|
||||
|
||||
#ifdef CONFIG_NFSD_BLOCKLAYOUT
|
||||
if (sb->s_export_op->get_uuid &&
|
||||
sb->s_export_op->map_blocks &&
|
||||
sb->s_export_op->commit_blocks)
|
||||
exp->ex_layout_type = LAYOUT_BLOCK_VOLUME;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -35,7 +35,9 @@ struct nfsd4_layout_ops {
|
||||
};
|
||||
|
||||
extern const struct nfsd4_layout_ops *nfsd4_layout_ops[];
|
||||
#ifdef CONFIG_NFSD_BLOCKLAYOUT
|
||||
extern const struct nfsd4_layout_ops bl_layout_ops;
|
||||
#endif
|
||||
|
||||
__be32 nfsd4_preprocess_layout_stateid(struct svc_rqst *rqstp,
|
||||
struct nfsd4_compound_state *cstate, stateid_t *stateid,
|
||||
|
@ -121,4 +121,4 @@ xfs-$(CONFIG_XFS_RT) += xfs_rtalloc.o
|
||||
xfs-$(CONFIG_XFS_POSIX_ACL) += xfs_acl.o
|
||||
xfs-$(CONFIG_SYSCTL) += xfs_sysctl.o
|
||||
xfs-$(CONFIG_COMPAT) += xfs_ioctl32.o
|
||||
xfs-$(CONFIG_NFSD_PNFS) += xfs_pnfs.o
|
||||
xfs-$(CONFIG_NFSD_BLOCKLAYOUT) += xfs_pnfs.o
|
||||
|
@ -246,7 +246,7 @@ const struct export_operations xfs_export_operations = {
|
||||
.fh_to_parent = xfs_fs_fh_to_parent,
|
||||
.get_parent = xfs_fs_get_parent,
|
||||
.commit_metadata = xfs_fs_nfs_commit_metadata,
|
||||
#ifdef CONFIG_NFSD_PNFS
|
||||
#ifdef CONFIG_NFSD_BLOCKLAYOUT
|
||||
.get_uuid = xfs_fs_get_uuid,
|
||||
.map_blocks = xfs_fs_map_blocks,
|
||||
.commit_blocks = xfs_fs_commit_blocks,
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef _XFS_PNFS_H
|
||||
#define _XFS_PNFS_H 1
|
||||
|
||||
#ifdef CONFIG_NFSD_PNFS
|
||||
#ifdef CONFIG_NFSD_BLOCKLAYOUT
|
||||
int xfs_fs_get_uuid(struct super_block *sb, u8 *buf, u32 *len, u64 *offset);
|
||||
int xfs_fs_map_blocks(struct inode *inode, loff_t offset, u64 length,
|
||||
struct iomap *iomap, bool write, u32 *device_generation);
|
||||
|
Loading…
Reference in New Issue
Block a user