[v2] xfs: abstract block export operations from nfsd layouts
diff mbox

Message ID 6c1549ee874431c8293cad72c5f7382095277822.1467985684.git.bcodding@redhat.com
State Accepted
Headers show

Commit Message

Benjamin Coddington July 8, 2016, 1:53 p.m. UTC
Instead of creeping pnfs layout configuration into filesystems, move the
definition of block-based export operations under a more abstract
configuration.

Changes from v1:
	- dropped the first patch in the first posting
	- renamed the config to EXPORTFS_BLOCK_OPS from BLOCK_EXPORT_OPS
	- add an explicit default to no for EXPORTFS_BLOCK_OPS
	- add some help and menu text

Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
---
 fs/Kconfig          | 7 +++++++
 fs/nfsd/Kconfig     | 2 ++
 fs/xfs/Makefile     | 3 +--
 fs/xfs/xfs_export.c | 2 +-
 fs/xfs/xfs_pnfs.h   | 4 ++--
 5 files changed, 13 insertions(+), 5 deletions(-)

Comments

Christoph Hellwig July 10, 2016, 9:45 a.m. UTC | #1
On Fri, Jul 08, 2016 at 09:53:20AM -0400, Benjamin Coddington wrote:
> Instead of creeping pnfs layout configuration into filesystems, move the
> definition of block-based export operations under a more abstract
> configuration.
> 
> Changes from v1:
> 	- dropped the first patch in the first posting
> 	- renamed the config to EXPORTFS_BLOCK_OPS from BLOCK_EXPORT_OPS
> 	- add an explicit default to no for EXPORTFS_BLOCK_OPS
> 	- add some help and menu text
> 
> Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
> ---
>  fs/Kconfig          | 7 +++++++
>  fs/nfsd/Kconfig     | 2 ++
>  fs/xfs/Makefile     | 3 +--
>  fs/xfs/xfs_export.c | 2 +-
>  fs/xfs/xfs_pnfs.h   | 4 ++--
>  5 files changed, 13 insertions(+), 5 deletions(-)
> 
> diff --git a/fs/Kconfig b/fs/Kconfig
> index 6725f59c18e6..ac6d3b36600c 100644
> --- a/fs/Kconfig
> +++ b/fs/Kconfig
> @@ -66,6 +66,13 @@ config FS_POSIX_ACL
>  config EXPORTFS
>  	tristate
>  
> +config EXPORTFS_BLOCK_OPS
> +	bool "Enable filesystem export operations for block IO"
> +	default n

default n is the default, no need to add it.

Otherwise looks fine:

Reviewed-by: Christoph Hellwig <hch@lst.de>
Bruce Fields July 13, 2016, 8:21 p.m. UTC | #2
On Sun, Jul 10, 2016 at 11:45:40AM +0200, Christoph Hellwig wrote:
> On Fri, Jul 08, 2016 at 09:53:20AM -0400, Benjamin Coddington wrote:
> > Instead of creeping pnfs layout configuration into filesystems, move the
> > definition of block-based export operations under a more abstract
> > configuration.
> > 
> > Changes from v1:
> > 	- dropped the first patch in the first posting
> > 	- renamed the config to EXPORTFS_BLOCK_OPS from BLOCK_EXPORT_OPS
> > 	- add an explicit default to no for EXPORTFS_BLOCK_OPS
> > 	- add some help and menu text
> > 
> > Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
> > ---
> >  fs/Kconfig          | 7 +++++++
> >  fs/nfsd/Kconfig     | 2 ++
> >  fs/xfs/Makefile     | 3 +--
> >  fs/xfs/xfs_export.c | 2 +-
> >  fs/xfs/xfs_pnfs.h   | 4 ++--
> >  5 files changed, 13 insertions(+), 5 deletions(-)
> > 
> > diff --git a/fs/Kconfig b/fs/Kconfig
> > index 6725f59c18e6..ac6d3b36600c 100644
> > --- a/fs/Kconfig
> > +++ b/fs/Kconfig
> > @@ -66,6 +66,13 @@ config FS_POSIX_ACL
> >  config EXPORTFS
> >  	tristate
> >  
> > +config EXPORTFS_BLOCK_OPS
> > +	bool "Enable filesystem export operations for block IO"
> > +	default n
> 
> default n is the default, no need to add it.
> 
> Otherwise looks fine:
> 
> Reviewed-by: Christoph Hellwig <hch@lst.de>

Thanks.  Applied, with that one "default n" line dropped.

An ACK from Dave might also help reassure Linus I'm not stepping on
anybody's toes.

--b.
Dave Chinner July 13, 2016, 11:23 p.m. UTC | #3
On Wed, Jul 13, 2016 at 04:21:04PM -0400, J. Bruce Fields wrote:
> On Sun, Jul 10, 2016 at 11:45:40AM +0200, Christoph Hellwig wrote:
> > On Fri, Jul 08, 2016 at 09:53:20AM -0400, Benjamin Coddington wrote:
> > > Instead of creeping pnfs layout configuration into filesystems, move the
> > > definition of block-based export operations under a more abstract
> > > configuration.
> > > 
> > > Changes from v1:
> > > 	- dropped the first patch in the first posting
> > > 	- renamed the config to EXPORTFS_BLOCK_OPS from BLOCK_EXPORT_OPS
> > > 	- add an explicit default to no for EXPORTFS_BLOCK_OPS
> > > 	- add some help and menu text
> > > 
> > > Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
> > > ---
> > >  fs/Kconfig          | 7 +++++++
> > >  fs/nfsd/Kconfig     | 2 ++
> > >  fs/xfs/Makefile     | 3 +--
> > >  fs/xfs/xfs_export.c | 2 +-
> > >  fs/xfs/xfs_pnfs.h   | 4 ++--
> > >  5 files changed, 13 insertions(+), 5 deletions(-)
> > > 
> > > diff --git a/fs/Kconfig b/fs/Kconfig
> > > index 6725f59c18e6..ac6d3b36600c 100644
> > > --- a/fs/Kconfig
> > > +++ b/fs/Kconfig
> > > @@ -66,6 +66,13 @@ config FS_POSIX_ACL
> > >  config EXPORTFS
> > >  	tristate
> > >  
> > > +config EXPORTFS_BLOCK_OPS
> > > +	bool "Enable filesystem export operations for block IO"
> > > +	default n
> > 
> > default n is the default, no need to add it.
> > 
> > Otherwise looks fine:
> > 
> > Reviewed-by: Christoph Hellwig <hch@lst.de>
> 
> Thanks.  Applied, with that one "default n" line dropped.
> 
> An ACK from Dave might also help reassure Linus I'm not stepping on
> anybody's toes.

Acked-by: Dave Chinner <david@fromorbit.com>

Patch
diff mbox

diff --git a/fs/Kconfig b/fs/Kconfig
index 6725f59c18e6..ac6d3b36600c 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -66,6 +66,13 @@  config FS_POSIX_ACL
 config EXPORTFS
 	tristate
 
+config EXPORTFS_BLOCK_OPS
+	bool "Enable filesystem export operations for block IO"
+	default n
+	help
+	  This option enables the export operations for a filesystem to support
+	  external block IO.
+
 config FILE_LOCKING
 	bool "Enable POSIX file locking API" if EXPERT
 	default y
diff --git a/fs/nfsd/Kconfig b/fs/nfsd/Kconfig
index c9f583d7bac8..00b9c5eaecec 100644
--- a/fs/nfsd/Kconfig
+++ b/fs/nfsd/Kconfig
@@ -90,6 +90,7 @@  config NFSD_BLOCKLAYOUT
 	bool "NFSv4.1 server support for pNFS block layouts"
 	depends on NFSD_V4 && BLOCK
 	select NFSD_PNFS
+	select EXPORTFS_BLOCK_OPS
 	help
 	  This option enables support for the exporting pNFS block layouts
 	  in the kernel's NFS server. The pNFS block layout enables NFS
@@ -102,6 +103,7 @@  config NFSD_SCSILAYOUT
 	bool "NFSv4.1 server support for pNFS SCSI layouts"
 	depends on NFSD_V4 && BLOCK
 	select NFSD_PNFS
+	select EXPORTFS_BLOCK_OPS
 	help
 	  This option enables support for the exporting pNFS SCSI layouts
 	  in the kernel's NFS server. The pNFS SCSI layout enables NFS
diff --git a/fs/xfs/Makefile b/fs/xfs/Makefile
index 3542d94fddce..52c288514be1 100644
--- a/fs/xfs/Makefile
+++ b/fs/xfs/Makefile
@@ -121,5 +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_BLOCKLAYOUT)	+= xfs_pnfs.o
-xfs-$(CONFIG_NFSD_SCSILAYOUT)	+= xfs_pnfs.o
+xfs-$(CONFIG_EXPORTFS_BLOCK_OPS)	+= xfs_pnfs.o
diff --git a/fs/xfs/xfs_export.c b/fs/xfs/xfs_export.c
index a1b2dd828b9d..fe1bfee35898 100644
--- a/fs/xfs/xfs_export.c
+++ b/fs/xfs/xfs_export.c
@@ -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_BLOCKLAYOUT
+#ifdef CONFIG_EXPORTFS_BLOCK_OPS
 	.get_uuid		= xfs_fs_get_uuid,
 	.map_blocks		= xfs_fs_map_blocks,
 	.commit_blocks		= xfs_fs_commit_blocks,
diff --git a/fs/xfs/xfs_pnfs.h b/fs/xfs/xfs_pnfs.h
index 93f74853961b..e8339f74966b 100644
--- a/fs/xfs/xfs_pnfs.h
+++ b/fs/xfs/xfs_pnfs.h
@@ -1,7 +1,7 @@ 
 #ifndef _XFS_PNFS_H
 #define _XFS_PNFS_H 1
 
-#if defined(CONFIG_NFSD_BLOCKLAYOUT) || defined(CONFIG_NFSD_SCSILAYOUT)
+#ifdef CONFIG_EXPORTFS_BLOCK_OPS
 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);
@@ -15,5 +15,5 @@  xfs_break_layouts(struct inode *inode, uint *iolock, bool with_imutex)
 {
 	return 0;
 }
-#endif /* CONFIG_NFSD_PNFS */
+#endif /* CONFIG_EXPORTFS_BLOCK_OPS */
 #endif /* _XFS_PNFS_H */