2016-07-08 13:53:23

by Benjamin Coddington

[permalink] [raw]
Subject: [PATCH v2] xfs: abstract block export operations from nfsd layouts

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 <[email protected]>
---
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
+ 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 */
--
2.5.5



2016-07-10 09:45:42

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH v2] xfs: abstract block export operations from nfsd layouts

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 <[email protected]>
> ---
> 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 <[email protected]>

2016-07-13 20:21:06

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [PATCH v2] xfs: abstract block export operations from nfsd layouts

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 <[email protected]>
> > ---
> > 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 <[email protected]>

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.

2016-07-13 23:23:29

by Dave Chinner

[permalink] [raw]
Subject: Re: [PATCH v2] xfs: abstract block export operations from nfsd layouts

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 <[email protected]>
> > > ---
> > > 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 <[email protected]>
>
> 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 <[email protected]>

--
Dave Chinner
[email protected]