From: Guenter Roeck <linux@roeck-us.net>
To: "J. Bruce Fields" <bfields@fieldses.org>
Cc: Bas Peters <baspeters93@gmail.com>,
hch@lst.de, linux-nfs@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-next@vger.kernel.org,
jim.epost@gmail.com
Subject: Re: [PATCH] fs: nfsd:xdr4.h: add missing conditional group CONFIG_NFSD_V3
Date: Fri, 13 Feb 2015 08:52:57 -0800 [thread overview]
Message-ID: <54DE2BE9.5030706@roeck-us.net> (raw)
In-Reply-To: <20150213145121.GC6808@fieldses.org>
On 02/13/2015 06:51 AM, J. Bruce Fields wrote:
> On Thu, Feb 12, 2015 at 03:02:01PM -0800, Guenter Roeck wrote:
>> On Thu, Feb 12, 2015 at 11:09:13PM +0100, Bas Peters wrote:
>>> This patch adds a missing conditional group that has been causing build
>>> breakages due to undefined struct members being referenced when
>>> CONFIG_NFSD_v3 is not set.
>>>
>>> This patch applies against linux-next.
>>>
>>> Signed-off-by: Bas Peters <baspeters93@gmail.com>
>>> ---
>>> fs/nfsd/xdr4.h | 6 ++++--
>>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h
>>> index 0bda93e..5d1597f 100644
>>> --- a/fs/nfsd/xdr4.h
>>> +++ b/fs/nfsd/xdr4.h
>>> @@ -630,9 +630,11 @@ void warn_on_nonidempotent_op(struct nfsd4_op *op);
>>> static inline void
>>> set_change_info(struct nfsd4_change_info *cinfo, struct svc_fh *fhp)
>>> {
>>> + cinfo->change_supported = IS_I_VERSION(fhp->fh_dentry->d_inode);
>>> +
>>> +#ifdef CONFIG_NFSD_V3
>>> BUG_ON(!fhp->fh_pre_saved);
>>> cinfo->atomic = fhp->fh_post_saved;
>>> - cinfo->change_supported = IS_I_VERSION(fhp->fh_dentry->d_inode);
>>>
>>> cinfo->before_change = fhp->fh_pre_change;
>>> cinfo->after_change = fhp->fh_post_change;
>>> @@ -640,7 +642,7 @@ set_change_info(struct nfsd4_change_info *cinfo, struct svc_fh *fhp)
>>> cinfo->before_ctime_nsec = fhp->fh_pre_ctime.tv_nsec;
>>> cinfo->after_ctime_sec = fhp->fh_post_attr.ctime.tv_sec;
>>> cinfo->after_ctime_nsec = fhp->fh_post_attr.ctime.tv_nsec;
>>> -
>>> +#endif
>>> }
>>
>> You'll want to include and example of the build failure in the description,
>> bisect results after the '---' line, and a Fixes: line pointing to the patch
>> breaking the build.
>>
>> In this case, I am not sure if the above really fixes the problem,
>> or if it just hides it behind an #ifdef. To determine that, it will
>> probably be necessary to know which patch actually caused the problem.
>> This even more true since the code in question was not changed since
>> around 2010, so making it conditional looks really suspicious.
>>
>> In the curent case, I suspect that the problem may have been introduced by
>> commit 9cf514ccfac ("nfsd: implement pNFS operations"). That is just a guess,
>> though; I didn't run bisect myself. The key really is to figure out why the
>> code now fails to build, and not just to comment out the code that is causing
>> the failure.
>
> Yeah, when Jim Davis reported this I took a quick look at the history,
> didn't see an obvious explanation, and figured well maybe this is just
> the first time anyone's hit that particular config in a while. Sounds
> like this actually is a recent regression?
>
It was intruduced by 9cf514ccfac. Problem is that xdr4.h is only supposed to
be used and included by NFSv4 code but is now included even if NFSv3 and/or
NFSv4 are not configured. The variables in fhp accessed above do not exist
unless NFSv3 is configured.
The patch here is therefore really just a kludge, though I don't really know
an easy real fix.
If you ask me, I'd say that 9cf514ccfac was rushed into mainline a bit.
It showed up in next on Feb 10 and pushed into mainline just a day or two
later. Result is that every build with NFS configured but not NSFv3 is
now broken.
Guenter
next prev parent reply other threads:[~2015-02-13 16:53 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-12 22:09 [PATCH] fs: nfsd:xdr4.h: add missing conditional group CONFIG_NFSD_V3 Bas Peters
2015-02-12 23:02 ` Guenter Roeck
2015-02-13 14:51 ` J. Bruce Fields
2015-02-13 16:52 ` Guenter Roeck [this message]
2015-02-13 17:33 ` J. Bruce Fields
2015-02-13 17:44 ` Guenter Roeck
2015-02-13 19:18 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54DE2BE9.5030706@roeck-us.net \
--to=linux@roeck-us.net \
--cc=baspeters93@gmail.com \
--cc=bfields@fieldses.org \
--cc=hch@lst.de \
--cc=jim.epost@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-next@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox