All of lore.kernel.org
 help / color / mirror / Atom feed
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

  reply	other threads:[~2015-02-13 16:53 UTC|newest]

Thread overview: 9+ 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
     [not found] ` <1423778953-28307-1-git-send-email-baspeters93-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-02-12 23:02   ` Guenter Roeck
2015-02-12 23:02     ` Guenter Roeck
     [not found]     ` <20150212230201.GB17998-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2015-02-13 14:51       ` J. Bruce Fields
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.