nfsd: add a new config option for the block layout driver
authorChristoph Hellwig <hch@lst.de>
Fri, 4 Mar 2016 19:46:16 +0000 (20:46 +0100)
committerJ. Bruce Fields <bfields@redhat.com>
Fri, 18 Mar 2016 15:40:57 +0000 (11:40 -0400)
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>
fs/nfsd/Kconfig
fs/nfsd/Makefile
fs/nfsd/nfs4layouts.c
fs/nfsd/pnfs.h
fs/xfs/Makefile
fs/xfs/xfs_export.c
fs/xfs/xfs_pnfs.h

index a0b77fc1bd3944e9f966705518d4138cd2e4f0e3..eb70d91b255b4a180df16cd071fcf04f72ed8ec2 100644 (file)
@@ -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.
 
index 9a6028e120c68bce8adf15456b39382eab3b6a7c..679cdc6efee819bec16a84aca3ac5fbb3c40ed92 100644 (file)
@@ -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
index ce2d010d3b170627c82b281c11e206bd97109365..4e4def77ebc7350d5f333f76050da939f85ffe52 100644 (file)
@@ -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
index d4c4453674c60d5b98120f1209030ba103dbe671..ff50bfa1f76fb742af46d52c19fcedf3367d3ded 100644 (file)
@@ -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,
index f64639176670b2228ac532607c0454d4b6e5a784..d68b62a765920ae527637a556fa6b58e40cfea37 100644 (file)
@@ -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
index 652cd3c5b58c1cac1562239c9c644a19dbe588b7..0492b82281f3f10bf6ed7b166ea7096b1ccccbc3 100644 (file)
@@ -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,
index 8147ac1088203b285bb8ebd6462c00d0c916abc1..d85529ca299e5fa34da076daea58007ad472a21b 100644 (file)
@@ -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);
This page took 0.029764 seconds and 5 git commands to generate.