2013-11-15 22:31:00

by Anna Schumaker

[permalink] [raw]
Subject: [PATCH] NFS: Fix kbuild errors due to missing symbols

My recent patch 644aa303: "NFS: Enabling v4.2 should not recompile nfsd
and lockd" caused build errors when CONFIG_NFS_USE_LEGACY_DNS=y and when
CONFIG_NFS_V4=n. This patch fixes those errors.

Signed-off-by: Anna Schumaker <[email protected]>
---
fs/nfs/nfs4_fs.h | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
index e916e86..dc1c915 100644
--- a/fs/nfs/nfs4_fs.h
+++ b/fs/nfs/nfs4_fs.h
@@ -9,21 +9,20 @@
#ifndef __LINUX_FS_NFS_NFS4_FS_H
#define __LINUX_FS_NFS_NFS4_FS_H

-#if IS_ENABLED(CONFIG_NFS_V4)
-
-#define NFS4_MAX_LOOP_ON_RECOVER (10)
-
-#include <linux/seqlock.h>
-
#if defined(CONFIG_NFS_V4_2)
#define NFS4_MAX_MINOR_VERSION 2
-#else
-#if defined(CONFIG_NFS_V4_1)
+#elif defined(CONFIG_NFS_V4_1)
#define NFS4_MAX_MINOR_VERSION 1
#else
#define NFS4_MAX_MINOR_VERSION 0
-#endif /* CONFIG_NFS_V4_1 */
-#endif /* CONFIG_NFS_V4_2 */
+#endif
+
+#if IS_ENABLED(CONFIG_NFS_V4)
+
+#define NFS4_MAX_LOOP_ON_RECOVER (10)
+
+#include <linux/seqlock.h>
+#include <linux/nfs_fs.h>

struct idmap;

--
1.8.4.2



2013-11-18 18:37:59

by Myklebust, Trond

[permalink] [raw]
Subject: Re: [PATCH] NFS: Fix kbuild errors due to missing symbols


On Nov 18, 2013, at 12:50, Anna Schumaker <[email protected]> wrote:
>
> It's a poorly phrased commit message, actually. I meant that just setting CONFIG_NFS_USE_LEGACY_DNS=y causes build problems, and then setting CONFIG_NFS_V4=n causes a different set of errors.

Ah. OK, now I see why you need it. The code in fs/nfs/super.c relies on it when !defined CONFIG_NFS_V4.

You also need to move the CONFIG_NFS_V4_SECURITY_LABEL section outside the CONFIG_NFS_V4, since fs/nfs/dir.c and others need the dummy nfs4_label_alloc and nfs4_label_free inline functions (see Stephen Rothwell
?s email).


--
Trond Myklebust
Linux NFS client maintainer

NetApp
[email protected]
http://www.netapp.com


2013-11-18 18:41:22

by Anna Schumaker

[permalink] [raw]
Subject: Re: [PATCH] NFS: Fix kbuild errors due to missing symbols

On 11/18/2013 01:37 PM, Myklebust, Trond wrote:
>
> On Nov 18, 2013, at 12:50, Anna Schumaker <[email protected]> wrote:
>>
>> It's a poorly phrased commit message, actually. I meant that just setting CONFIG_NFS_USE_LEGACY_DNS=y causes build problems, and then setting CONFIG_NFS_V4=n causes a different set of errors.
>
> Ah. OK, now I see why you need it. The code in fs/nfs/super.c relies on it when !defined CONFIG_NFS_V4.
>
> You also need to move the CONFIG_NFS_V4_SECURITY_LABEL section outside the CONFIG_NFS_V4, since fs/nfs/dir.c and others need the dummy nfs4_label_alloc and nfs4_label_free inline functions (see Stephen Rothwell
> ?s email).

Right. I have a patch that moves them to internal.h instead to get around the whole-file #ifdef that's in nfs4_fs.h. Would you prefer me to submit that independently or as a v2 to this patch?

As a bonus, I've used Jenkins to compile as many combinations as possible without an error (I probably should have done that the first time, though...)

Anna

>
>
> --
> Trond Myklebust
> Linux NFS client maintainer
>
> NetApp
> [email protected]
> http://www.netapp.com
>


2013-11-18 17:50:26

by Anna Schumaker

[permalink] [raw]
Subject: Re: [PATCH] NFS: Fix kbuild errors due to missing symbols

On 11/15/2013 06:16 PM, Trond Myklebust wrote:
> On Fri, 2013-11-15 at 17:30 -0500, Anna Schumaker wrote:
>> My recent patch 644aa303: "NFS: Enabling v4.2 should not recompile nfsd
>> and lockd" caused build errors when CONFIG_NFS_USE_LEGACY_DNS=y and when
>> CONFIG_NFS_V4=n. This patch fixes those errors.
>>
>
> Wait...
>
> config NFS_USE_LEGACY_DNS
> bool "Use the legacy NFS DNS resolver"
> depends on NFS_V4
> help
> The kernel now provides a method for translating a host name into an
> IP address. Select Y here if you would rather use your own DNS
> resolver script.
>
> If unsure, say N
>
> config NFS_USE_KERNEL_DNS
> bool
> depends on NFS_V4 && !NFS_USE_LEGACY_DNS
> select DNS_RESOLVER
> default y
>
> How can that result in NFS_V4=n && NFS_USE_LEGACY_DNS=y?
>

It's a poorly phrased commit message, actually. I meant that just setting CONFIG_NFS_USE_LEGACY_DNS=y causes build problems, and then setting CONFIG_NFS_V4=n causes a different set of errors.

2013-11-18 18:49:50

by Myklebust, Trond

[permalink] [raw]
Subject: Re: [PATCH] NFS: Fix kbuild errors due to missing symbols


On Nov 18, 2013, at 13:41, Anna Schumaker <[email protected]> wrote:

> On 11/18/2013 01:37 PM, Myklebust, Trond wrote:
>>
>> On Nov 18, 2013, at 12:50, Anna Schumaker <[email protected]> wrote:
>>>
>>> It's a poorly phrased commit message, actually. I meant that just setting CONFIG_NFS_USE_LEGACY_DNS=y causes build problems, and then setting CONFIG_NFS_V4=n causes a different set of errors.
>>
>> Ah. OK, now I see why you need it. The code in fs/nfs/super.c relies on it when !defined CONFIG_NFS_V4.
>>
>> You also need to move the CONFIG_NFS_V4_SECURITY_LABEL section outside the CONFIG_NFS_V4, since fs/nfs/dir.c and others need the dummy nfs4_label_alloc and nfs4_label_free inline functions (see Stephen Rothwell
>> ?s email).
>
> Right. I have a patch that moves them to internal.h instead to get around the whole-file #ifdef that's in nfs4_fs.h. Would you prefer me to submit that independently or as a v2 to this patch?

Please do it as a v2.

> As a bonus, I've used Jenkins to compile as many combinations as possible without an error (I probably should have done that the first time, though...)

--
Trond Myklebust
Linux NFS client maintainer

NetApp
[email protected]
http://www.netapp.com


2013-11-15 23:25:42

by Trond Myklebust

[permalink] [raw]
Subject: Re: [PATCH] NFS: Fix kbuild errors due to missing symbols


On Nov 15, 2013, at 18:16, Trond Myklebust <[email protected]> wrote:

> On Fri, 2013-11-15 at 17:30 -0500, Anna Schumaker wrote:
>> My recent patch 644aa303: "NFS: Enabling v4.2 should not recompile nfsd
>> and lockd" caused build errors when CONFIG_NFS_USE_LEGACY_DNS=y and when
>> CONFIG_NFS_V4=n. This patch fixes those errors.
>>
>
> Wait...
>
> config NFS_USE_LEGACY_DNS
> bool "Use the legacy NFS DNS resolver"
> depends on NFS_V4
> help
> The kernel now provides a method for translating a host name into an
> IP address. Select Y here if you would rather use your own DNS
> resolver script.
>
> If unsure, say N
>
> config NFS_USE_KERNEL_DNS
> bool
> depends on NFS_V4 && !NFS_USE_LEGACY_DNS
> select DNS_RESOLVER
> default y
>
> How can that result in NFS_V4=n && NFS_USE_LEGACY_DNS=y?

OK. The problem is resolved using an include of nfs_fs.h in the right spot. Will fix?


2013-11-15 23:17:00

by Trond Myklebust

[permalink] [raw]
Subject: Re: [PATCH] NFS: Fix kbuild errors due to missing symbols

On Fri, 2013-11-15 at 17:30 -0500, Anna Schumaker wrote:
+AD4 My recent patch 644aa303: +ACI-NFS: Enabling v4.2 should not recompile nfsd
+AD4 and lockd+ACI caused build errors when CONFIG+AF8-NFS+AF8-USE+AF8-LEGACY+AF8-DNS+AD0-y and when
+AD4 CONFIG+AF8-NFS+AF8-V4+AD0-n. This patch fixes those errors.
+AD4

Wait...

config NFS+AF8-USE+AF8-LEGACY+AF8-DNS
bool +ACI-Use the legacy NFS DNS resolver+ACI
depends on NFS+AF8-V4
help
The kernel now provides a method for translating a host name into an
IP address. Select Y here if you would rather use your own DNS
resolver script.

If unsure, say N

config NFS+AF8-USE+AF8-KERNEL+AF8-DNS
bool
depends on NFS+AF8-V4 +ACYAJg +ACE-NFS+AF8-USE+AF8-LEGACY+AF8-DNS
select DNS+AF8-RESOLVER
default y

How can that result in NFS+AF8-V4+AD0-n +ACYAJg NFS+AF8-USE+AF8-LEGACY+AF8-DNS+AD0-y?