public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@kernel.org>
To: Chuck Lever III <chuck.lever@oracle.com>
Cc: Neil Brown <neilb@suse.de>,
	Linux NFS Mailing List <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH v3 3/4] nfsd: close race between unhashing and LRU addition
Date: Mon, 31 Oct 2022 09:28:25 -0400	[thread overview]
Message-ID: <014cde00a44c7240414049ac5d179320e96df6c8.camel@kernel.org> (raw)
In-Reply-To: <202AD086-4F1F-41D6-ABDC-BA6C91DA5BBF@oracle.com>

On Mon, 2022-10-31 at 13:14 +0000, Chuck Lever III wrote:
> 
> > On Oct 31, 2022, at 6:08 AM, Jeff Layton <jlayton@kernel.org> wrote:
> > 
> > On Mon, 2022-10-31 at 02:51 +0000, Chuck Lever III wrote:
> > > 
> > > > On Oct 30, 2022, at 5:45 PM, NeilBrown <neilb@suse.de> wrote:
> > > > 
> > > > On Sat, 29 Oct 2022, Chuck Lever III wrote:
> > > > > 
> > > > > > On Oct 28, 2022, at 2:57 PM, Jeff Layton <jlayton@kernel.org> wrote:
> > > > > > 
> > > > > > The list_lru_add and list_lru_del functions use list_empty checks to see
> > > > > > whether the object is already on the LRU. That's fine in most cases, but
> > > > > > we occasionally repurpose nf_lru after unhashing. It's possible for an
> > > > > > LRU removal to remove it from a different list altogether if we lose a
> > > > > > race.
> > > 
> > > Can that issue be resolved by simply adding a "struct list_head nf_dispose"
> > > field? That might be more straightforward than adding conditional logic.
> > > 
> > 
> > Yes, though that would take more memory.
> 
> Not really. pahole says struct nfsd_file is currently 40 bytes short
> of two cache lines. So adding a list_head field should not push the
> size of nfsd_file to the point where kmalloc would have to allocate
> more memory per object.
> 
> I'm wondering if a separate list_head field would help simplify
> nfsd_file_put() ?
> 

Probably not. It wouldn't need the flag anymore, but the logic would
still be roughly the same. We still have to check for the race between
unhashing and adding to the LRU either way.
 
-- 
Jeff Layton <jlayton@kernel.org>

  reply	other threads:[~2022-10-31 13:28 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-28 18:57 [PATCH v3 0/4] nfsd: clean up refcounting in the filecache Jeff Layton
2022-10-28 18:57 ` [PATCH v3 1/4] nfsd: remove the pages_flushed statistic from filecache Jeff Layton
2022-10-28 19:41   ` Chuck Lever III
2022-10-28 18:57 ` [PATCH v3 2/4] nfsd: rework refcounting in filecache Jeff Layton
2022-10-28 19:49   ` Chuck Lever III
2022-10-28 20:13     ` Jeff Layton
2022-10-28 20:39       ` Chuck Lever III
2022-10-28 21:03         ` Jeff Layton
2022-10-28 21:23           ` Chuck Lever III
2022-10-31  9:40             ` Jeff Layton
2022-11-01 13:58       ` Chuck Lever III
2022-11-01 14:19         ` Jeff Layton
2022-10-28 18:57 ` [PATCH v3 3/4] nfsd: close race between unhashing and LRU addition Jeff Layton
2022-10-28 19:50   ` Chuck Lever III
2022-10-28 20:04     ` Jeff Layton
2022-10-30 21:45     ` NeilBrown
2022-10-31  2:51       ` Chuck Lever III
2022-10-31 10:08         ` Jeff Layton
2022-10-31 13:14           ` Chuck Lever III
2022-10-31 13:28             ` Jeff Layton [this message]
2022-10-31 10:01       ` Jeff Layton
2022-10-28 18:57 ` [PATCH v3 4/4] nfsd: start non-blocking writeback after adding nfsd_file to the LRU Jeff Layton
2022-10-28 19:50   ` Chuck Lever III
2022-10-28 20:30     ` Jeff Layton
2022-10-28 20:57       ` Chuck Lever III
2022-10-31  9:36         ` Jeff Layton

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=014cde00a44c7240414049ac5d179320e96df6c8.camel@kernel.org \
    --to=jlayton@kernel.org \
    --cc=chuck.lever@oracle.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=neilb@suse.de \
    /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