nfsd: allow SCSI layout support without Block layout
diff mbox

Message ID 74871b1ce0d09b21fb67c1b2176695cc1c19169e.1467624319.git.bcodding@redhat.com
State Not Applicable
Headers show

Commit Message

Benjamin Coddington July 6, 2016, 1:48 a.m. UTC
We shouldn't have to configure both NFSD_BLOCKLAYOUT and NFSD_SCSILAYOUT if
all we want are SCSI layouts on the server, so define the xfs export
operations for either configuration.

Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
---
 fs/xfs/xfs_export.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Dave Chinner July 6, 2016, 9:19 a.m. UTC | #1
On Tue, Jul 05, 2016 at 09:48:47PM -0400, Benjamin Coddington wrote:
> We shouldn't have to configure both NFSD_BLOCKLAYOUT and NFSD_SCSILAYOUT if
> all we want are SCSI layouts on the server, so define the xfs export
> operations for either configuration.
> 
> Signed-off-by: Benjamin Coddington <bcodding@redhat.com>

I don't really like exploding config option dependencies into
subsystems that aren't actually related to the config options.
It's confusing enough laready that we've got XFS code dependent on
PNFSD config options without adding more to it. Instead, I'd
suggest this should be resolved in the kconfig files. i.e. make
CONFIG_NFSD_SCSILAYOUT=y select CONFIG_NFSD_BLOCKLAYOUT to resolve
the config dependency at config time.

Cheers,

Dave.
Benjamin Coddington July 6, 2016, 9:58 a.m. UTC | #2
On 6 Jul 2016, at 5:19, Dave Chinner wrote:

> On Tue, Jul 05, 2016 at 09:48:47PM -0400, Benjamin Coddington wrote:
>> We shouldn't have to configure both NFSD_BLOCKLAYOUT and 
>> NFSD_SCSILAYOUT if
>> all we want are SCSI layouts on the server, so define the xfs export
>> operations for either configuration.
>>
>> Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
>
> I don't really like exploding config option dependencies into
> subsystems that aren't actually related to the config options.
> It's confusing enough laready that we've got XFS code dependent on
> PNFSD config options without adding more to it. Instead, I'd
> suggest this should be resolved in the kconfig files. i.e. make
> CONFIG_NFSD_SCSILAYOUT=y select CONFIG_NFSD_BLOCKLAYOUT to resolve
> the config dependency at config time.

But the point is to leave CONFIG_NFSD_BLOCKLAYOUT undefined otherwise 
knfsd
will advertise block layouts to clients -- which we don't want.

Would a third define specific for xfs_export_operations that gets
set in kconfig files work for you?  Something like XFS_PNFS_EXPORT_OPS.

Ben
bfields@fieldses.org July 6, 2016, 12:43 p.m. UTC | #3
On Wed, Jul 06, 2016 at 05:58:09AM -0400, Benjamin Coddington wrote:
> On 6 Jul 2016, at 5:19, Dave Chinner wrote:
> 
> >On Tue, Jul 05, 2016 at 09:48:47PM -0400, Benjamin Coddington wrote:
> >>We shouldn't have to configure both NFSD_BLOCKLAYOUT and
> >>NFSD_SCSILAYOUT if
> >>all we want are SCSI layouts on the server, so define the xfs export
> >>operations for either configuration.
> >>
> >>Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
> >
> >I don't really like exploding config option dependencies into
> >subsystems that aren't actually related to the config options.
> >It's confusing enough laready that we've got XFS code dependent on
> >PNFSD config options without adding more to it. Instead, I'd
> >suggest this should be resolved in the kconfig files. i.e. make
> >CONFIG_NFSD_SCSILAYOUT=y select CONFIG_NFSD_BLOCKLAYOUT to resolve
> >the config dependency at config time.
> 
> But the point is to leave CONFIG_NFSD_BLOCKLAYOUT undefined
> otherwise knfsd
> will advertise block layouts to clients -- which we don't want.
> 
> Would a third define specific for xfs_export_operations that gets
> set in kconfig files work for you?  Something like XFS_PNFS_EXPORT_OPS.

That makes sense to me....

--b.
Dave Chinner July 6, 2016, 10:16 p.m. UTC | #4
On Wed, Jul 06, 2016 at 08:43:26AM -0400, J. Bruce Fields wrote:
> On Wed, Jul 06, 2016 at 05:58:09AM -0400, Benjamin Coddington wrote:
> > On 6 Jul 2016, at 5:19, Dave Chinner wrote:
> > 
> > >On Tue, Jul 05, 2016 at 09:48:47PM -0400, Benjamin Coddington wrote:
> > >>We shouldn't have to configure both NFSD_BLOCKLAYOUT and
> > >>NFSD_SCSILAYOUT if
> > >>all we want are SCSI layouts on the server, so define the xfs export
> > >>operations for either configuration.
> > >>
> > >>Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
> > >
> > >I don't really like exploding config option dependencies into
> > >subsystems that aren't actually related to the config options.
> > >It's confusing enough laready that we've got XFS code dependent on
> > >PNFSD config options without adding more to it. Instead, I'd
> > >suggest this should be resolved in the kconfig files. i.e. make
> > >CONFIG_NFSD_SCSILAYOUT=y select CONFIG_NFSD_BLOCKLAYOUT to resolve
> > >the config dependency at config time.
> > 
> > But the point is to leave CONFIG_NFSD_BLOCKLAYOUT undefined
> > otherwise knfsd
> > will advertise block layouts to clients -- which we don't want.

Pnfsd layout is determined at compile time?  That's seems less than
useful to me for distros wanting to support for multiple layout
types in the one kernel. i.e. Shouldn't the layout to be advertised
be something like a per-export configuration option rather than
determined at compile time define?

> > Would a third define specific for xfs_export_operations that gets
> > set in kconfig files work for you?  Something like XFS_PNFS_EXPORT_OPS.
>
> That makes sense to me....

Sounds good, but I'd drop the "XFS_" prefix because when multiple
filesytems end up supporting it, we don't want to have to select
every single one of them from the PNFSD config options...

Cheers,

Dave.
bfields@fieldses.org July 6, 2016, 10:41 p.m. UTC | #5
On Thu, Jul 07, 2016 at 08:16:48AM +1000, Dave Chinner wrote:
> On Wed, Jul 06, 2016 at 08:43:26AM -0400, J. Bruce Fields wrote:
> > On Wed, Jul 06, 2016 at 05:58:09AM -0400, Benjamin Coddington wrote:
> > > On 6 Jul 2016, at 5:19, Dave Chinner wrote:
> > > 
> > > >On Tue, Jul 05, 2016 at 09:48:47PM -0400, Benjamin Coddington wrote:
> > > >>We shouldn't have to configure both NFSD_BLOCKLAYOUT and
> > > >>NFSD_SCSILAYOUT if
> > > >>all we want are SCSI layouts on the server, so define the xfs export
> > > >>operations for either configuration.
> > > >>
> > > >>Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
> > > >
> > > >I don't really like exploding config option dependencies into
> > > >subsystems that aren't actually related to the config options.
> > > >It's confusing enough laready that we've got XFS code dependent on
> > > >PNFSD config options without adding more to it. Instead, I'd
> > > >suggest this should be resolved in the kconfig files. i.e. make
> > > >CONFIG_NFSD_SCSILAYOUT=y select CONFIG_NFSD_BLOCKLAYOUT to resolve
> > > >the config dependency at config time.
> > > 
> > > But the point is to leave CONFIG_NFSD_BLOCKLAYOUT undefined
> > > otherwise knfsd
> > > will advertise block layouts to clients -- which we don't want.
> 
> Pnfsd layout is determined at compile time?

On the server side it's currently controlled just by that and by a
single off-or-on "pnfs" option.  Well, and client behavior also
determines which one's actually negotiated in practice.

> That's seems less than useful to me for distros wanting to support for
> multiple layout types in the one kernel. i.e. Shouldn't the layout to
> be advertised be something like a per-export configuration option
> rather than determined at compile time define?

Yes, eventually we'll want something like that.  For now it's not
terribly interesting.

> > > Would a third define specific for xfs_export_operations that gets
> > > set in kconfig files work for you?  Something like XFS_PNFS_EXPORT_OPS.
> >
> > That makes sense to me....
> 
> Sounds good, but I'd drop the "XFS_" prefix because when multiple
> filesytems end up supporting it, we don't want to have to select
> every single one of them from the PNFSD config options...

OK.

--b.
Benjamin Coddington July 7, 2016, 9:29 a.m. UTC | #6
On 6 Jul 2016, at 18:16, Dave Chinner wrote:

> On Wed, Jul 06, 2016 at 08:43:26AM -0400, J. Bruce Fields wrote:
>> On Wed, Jul 06, 2016 at 05:58:09AM -0400, Benjamin Coddington wrote:
>>> On 6 Jul 2016, at 5:19, Dave Chinner wrote:
>>>
>>>> On Tue, Jul 05, 2016 at 09:48:47PM -0400, Benjamin Coddington wrote:
>>>>> We shouldn't have to configure both NFSD_BLOCKLAYOUT and
>>>>> NFSD_SCSILAYOUT if
>>>>> all we want are SCSI layouts on the server, so define the xfs export
>>>>> operations for either configuration.
>>>>>
>>>>> Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
>>>>
>>>> I don't really like exploding config option dependencies into
>>>> subsystems that aren't actually related to the config options.
>>>> It's confusing enough laready that we've got XFS code dependent on
>>>> PNFSD config options without adding more to it. Instead, I'd
>>>> suggest this should be resolved in the kconfig files. i.e. make
>>>> CONFIG_NFSD_SCSILAYOUT=y select CONFIG_NFSD_BLOCKLAYOUT to resolve
>>>> the config dependency at config time.
>>>
>>> But the point is to leave CONFIG_NFSD_BLOCKLAYOUT undefined
>>> otherwise knfsd
>>> will advertise block layouts to clients -- which we don't want.
>
> Pnfsd layout is determined at compile time?  That's seems less than
> useful to me for distros wanting to support for multiple layout
> types in the one kernel. i.e. Shouldn't the layout to be advertised
> be something like a per-export configuration option rather than
> determined at compile time define?
>
>>> Would a third define specific for xfs_export_operations that gets
>>> set in kconfig files work for you?  Something like XFS_PNFS_EXPORT_OPS.
>>
>> That makes sense to me....
>
> Sounds good, but I'd drop the "XFS_" prefix because when multiple
> filesytems end up supporting it, we don't want to have to select
> every single one of them from the PNFSD config options...

I now think using PNFS_EXPORT_OPS is too general for all layouts, since nfsd
might support additional layout types that require other export_operations
that have nothing to do with out-of-filesystem access to the storage media.
Also, I believe there's been some interest in using the map_blocks and
commit_blocks interface elsewhere.  So, perhaps something like
CONFIG_BLOCK_EXPORT_OPS would be more appropriate. I'm going to run with
that unless someone disagrees.

I'll also send this as a follow-up to this patch instead of a v2, since
combining both changes into one patch would hide this fix to include these
operations for both SCSI and BLOCK layout types.

Ben

Patch
diff mbox

diff --git a/fs/xfs/xfs_export.c b/fs/xfs/xfs_export.c
index a1b2dd828b9d..b08a5541f292 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
+#if defined(CONFIG_NFSD_BLOCKLAYOUT) || defined(CONFIG_NFSD_SCSILAYOUT)
 	.get_uuid		= xfs_fs_get_uuid,
 	.map_blocks		= xfs_fs_map_blocks,
 	.commit_blocks		= xfs_fs_commit_blocks,