Bug 60841

Summary: fs/built-in.o: In function 'nfs_dns_resolve_name': (.text+0x1170cc): undefined reference to 'dns_query'
Product: File System Reporter: Tom Wijsman (TomWij)
Component: NFSAssignee: Trond Myklebust (trondmy)
Status: RESOLVED INVALID    
Severity: normal CC: kernel
Priority: P1    
Hardware: All   
OS: Linux   
URL: https://bugs.gentoo.org/show_bug.cgi?id=473724
Kernel Version: 3.10.7 Subsystem:
Regression: No Bisected commit-id:
Attachments: NFS-Kconfig-select-DNS_RESOLVER.patch

Description Tom Wijsman 2013-09-03 17:46:01 UTC
Created attachment 107401 [details]
NFS-Kconfig-select-DNS_RESOLVER.patch

Upon building from defconfig and only selecting CONFIG_NFS_V4 as modular, people get the following error when building:

fs/built-in.o: In function `nfs_dns_resolve_name':
(.text+0x1170cc): undefined reference to `dns_query'
make: *** [vmlinux] Error 1

Attached you will find a patch to fix this by Ben Kohler whom explains:

> What seems to be going on is:  marking CONFIG_NFS_V4=m also selects
> CONFIG_DNS_RESOLVER=m, but it actually also causes the built-in
> CONFIG_NFS_FS=y (nfs.o) to use some functions (like dns_query) from the
> modular dns_resolv.o.

This was discovered by Jaime Martin.

Downstream bug at https://bugs.gentoo.org/show_bug.cgi?id=473724
Comment 1 Trond Myklebust 2013-09-03 18:09:52 UTC
Comment on attachment 107401 [details]
NFS-Kconfig-select-DNS_RESOLVER.patch

commit c2e8139c9f797baa46515af6d350c51823736cbb (NFS: Use kernel DNS resolver [ver #2]) already selects DNS_RESOLVER as part of the config NFS_USE_KERNEL_DNS definition.
If the first select failed, how will selecting it again help?
Comment 2 Trond Myklebust 2013-09-03 18:16:49 UTC
OK, hang on...

You're also apparently missing commit c8d74d9b68b655e85ee4603f8918c3233a74f085 (NFSv4: Move the DNS resolver into the NFSv4 module)...
Comment 3 Tom Wijsman 2013-09-03 18:34:36 UTC
(In reply to Trond Myklebust from comment #1)
> Comment on attachment 107401 [details]
> NFS-Kconfig-select-DNS_RESOLVER.patch
> 
> commit c2e8139c9f797baa46515af6d350c51823736cbb (NFS: Use kernel DNS
> resolver [ver #2]) already selects DNS_RESOLVER as part of the config
> NFS_USE_KERNEL_DNS definition.
> If the first select failed, how will selecting it again help?

Hmm, odd, then perhaps the reporting user did select another option so NFS_USE_KERNEL_DNS was not satisfied; so under the condition that some other option that it depends on was changed it was possible to put it in that state.

Anyhow...

(In reply to Trond Myklebust from comment #2)
> OK, hang on...
> 
> You're also apparently missing commit
> c8d74d9b68b655e85ee4603f8918c3233a74f085 (NFSv4: Move the DNS resolver into
> the NFSv4 module)...

Ah, oops; sorry, I only checked whether Kconfig changed. So yeah, that indeed sounds like the commit that would deal with this and no longer require the Kconfig relation anymore; thank you very much for pointing this out.