From: Olga Kornievskaia <aglo@umich.edu>
To: Benjamin Coddington <bcodding@redhat.com>
Cc: Trond Myklebust <trondmy@hammerspace.com>,
Murphy Zhou <jencce.kernel@gmail.com>,
linux-nfs <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH] NFSv4: fix stateid refreshing when CLOSE racing with OPEN
Date: Fri, 4 Sep 2020 12:13:25 -0400 [thread overview]
Message-ID: <CAN-5tyH8xZmJ3Qsrh-Va8Mo1jALgZeg4DC01QPLc9+=XTr_Ozg@mail.gmail.com> (raw)
In-Reply-To: <6AAFBD30-1931-49A8-8120-B7171B0DA01C@redhat.com>
On Thu, Sep 3, 2020 at 1:55 PM Benjamin Coddington <bcodding@redhat.com> wrote:
>
>
> On 11 Oct 2019, at 10:14, Trond Myklebust wrote:
> > On Fri, 2019-10-11 at 16:49 +0800, Murphy Zhou wrote:
> >> On Thu, Oct 10, 2019 at 02:46:40PM +0000, Trond Myklebust wrote:
> >>> On Thu, 2019-10-10 at 15:40 +0800, Murphy Zhou wrote:
> ...
> >>>> @@ -3367,14 +3368,16 @@ static bool
> >>>> nfs4_refresh_open_old_stateid(nfs4_stateid *dst,
> >>>> break;
> >>>> }
> >>>> seqid_open = state->open_stateid.seqid;
> >>>> - if (read_seqretry(&state->seqlock, seq))
> >>>> - continue;
> >>>>
> >>>> dst_seqid = be32_to_cpu(dst->seqid);
> >>>> - if ((s32)(dst_seqid - be32_to_cpu(seqid_open)) >= 0)
> >>>> + if ((s32)(dst_seqid - be32_to_cpu(seqid_open)) > 0)
> >>>> dst->seqid = cpu_to_be32(dst_seqid + 1);
> >>>
> >>> This negates the whole intention of the patch you reference in the
> >>> 'Fixes:', which was to allow us to CLOSE files even if seqid bumps
> >>> have
> >>> been lost due to interrupted RPC calls e.g. when using 'soft' or
> >>> 'softerr' mounts.
> >>> With the above change, the check could just be tossed out
> >>> altogether,
> >>> because dst_seqid will never become larger than seqid_open.
> >>
> >> Hmm.. I got it wrong. Thanks for the explanation.
> >
> > So to be clear: I'm not saying that what you describe is not a problem.
> > I'm just saying that the fix you propose is really no better than
> > reverting the entire patch. I'd prefer not to do that, and would rather
> > see us look for ways to fix both problems, but if we can't find such as
> > fix then that would be the better solution.
>
> Hi Trond and Murphy Zhou,
>
> Sorry to resurrect this old thread, but I'm wondering if any progress was
> made on this front.
>
> I'm seeing this race manifest when process is never able to escape from the
> loop in nfs_set_open_stateid_locked() if CLOSE comes through first and
> clears out the state. We can play bit-fiddling games to fix that, but I
> feel like we'll just end up breaking it again later with another fix.
>
> Either we should revert 0e0cb35b417f, or talk about how to fix it. Seems
> like we should be able to put the CLOSE on the nfs4_state->waitq as well,
> and see if we can't just take that approach anytime our operations get out
> of sequence. Do you see any problems with this approach?
>
I'm not sure reverting the patch is the solution? Because I'm running
into the infinite ERR_OLD_STATEID loop on CLOSE on SLE15SP2 machines
which don't have this patch at all.
> Ben
>
next prev parent reply other threads:[~2020-09-04 16:13 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-10 7:40 [PATCH] NFSv4: fix stateid refreshing when CLOSE racing with OPEN Murphy Zhou
2019-10-10 14:46 ` Trond Myklebust
2019-10-11 8:49 ` Murphy Zhou
2019-10-11 14:14 ` Trond Myklebust
2020-09-03 17:54 ` Benjamin Coddington
2020-09-04 3:04 ` Murphy Zhou
2020-09-04 10:55 ` Benjamin Coddington
2020-09-04 14:14 ` Chuck Lever
2020-09-08 12:43 ` Benjamin Coddington
2020-09-04 16:13 ` Olga Kornievskaia [this message]
2019-10-10 17:32 ` Olga Kornievskaia
2019-10-11 9:42 ` Murphy Zhou
2019-10-11 14:18 ` Trond Myklebust
2019-10-11 18:50 ` Olga Kornievskaia
2019-10-19 0:34 ` Olga Kornievskaia
2019-10-21 17:15 ` Olga Kornievskaia
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='CAN-5tyH8xZmJ3Qsrh-Va8Mo1jALgZeg4DC01QPLc9+=XTr_Ozg@mail.gmail.com' \
--to=aglo@umich.edu \
--cc=bcodding@redhat.com \
--cc=jencce.kernel@gmail.com \
--cc=linux-nfs@vger.kernel.org \
--cc=trondmy@hammerspace.com \
/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;
as well as URLs for NNTP newsgroup(s).