From: David Howells <dhowells@redhat.com>
To: Al Viro <viro@zeniv.linux.org.uk>
Cc: dhowells@redhat.com, Dominique Martinet <asmadeus@codewreck.org>,
Luis Henriques <lhenriques@suse.de>,
Eric Van Hensbergen <ericvh@gmail.com>,
Latchesar Ionkov <lucho@ionkov.net>,
linux-fsdevel@vger.kernel.org,
v9fs-developer@lists.sourceforge.net
Subject: Re: What sort of inode state does ->evict_inode() expect to see? [was Re: 9p: fscache duplicate cookie]
Date: Wed, 12 May 2021 15:12:10 +0100 [thread overview]
Message-ID: <2919958.1620828730@warthog.procyon.org.uk> (raw)
In-Reply-To: <YJvb9S8uxV2X45Cu@zeniv-ca.linux.org.uk>
Al Viro <viro@zeniv.linux.org.uk> wrote:
> > We're seeing cases where fscache is reporting cookie collisions that appears
> > to be due to ->evict_inode() running parallel with a new inode for the same
> > filesystem object getting set up.
>
> Huh? Details, please. What we are guaranteed is that iget{,5}_locked() et.al.
> on the same object will either prevent the call of ->evict_inode() (if they
> manage to grab the sucker before I_FREEING is set) or will wait until after
> ->evict_inode() returns.
See the trace from Luis in:
https://lore.kernel.org/linux-fsdevel/87fsysyxh9.fsf@suse.de/
It appears that process 20591 manages to set up a new inode that has the same
key parameters as the one process 20585 is tearing down.
0000000097476aaa is the cookie pointer used by the old inode.
0000000011fa06b1 is the cookie pointer used by the new inode.
000000003080d900 is the cookie pointer for the parent superblock.
The fscache_acquire traceline emission is caused by one of:
(*) v9fs_qid_iget() or v9fs_qid_iget_dotl() calling
v9fs_cache_inode_get_cookie().
(*) v9fs_file_open*(O_RDONLY) or v9fs_vfs_atomic_open*(O_RDONLY) calling
v9fs_cache_inode_set_cookie().
(*) v9fs_cache_inode_reset_cookie(), which appears unused.
The fscache_relinquish traceline emission is caused by one of:
(*) v9fs_file_open(O_RDWR/O_WRONLY) or v9fs_vfs_atomic_open(O_RDWR/O_WRONLY)
calling v9fs_cache_inode_set_cookie().
(*) v9fs_evict_inode() calling v9fs_cache_inode_put_cookie().
(*) v9fs_cache_inode_reset_cookie(), which appears unused.
From the backtrace in:
https://lore.kernel.org/linux-fsdevel/87czu45gcs.fsf@suse.de/
the acquisition is being triggered in v9fs_vfs_atomic_open_dotl(), so it seems
v9fs_qid_iget_dotl() already happened - which *should* have created the
cookie.
So it seems more complicated than I thought.
David
next prev parent reply other threads:[~2021-05-12 14:12 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-06 10:03 9p: fscache duplicate cookie Luis Henriques
2021-05-06 10:45 ` Dominique Martinet
2021-05-06 12:18 ` Luis Henriques
2021-05-07 16:36 ` Luis Henriques
2021-05-08 0:47 ` Dominique Martinet
2021-05-10 10:54 ` Luis Henriques
2021-05-10 11:47 ` Luis Henriques
2021-05-11 12:44 ` David Howells
2021-05-12 10:10 ` Luis Henriques
2021-05-11 12:53 ` David Howells
2021-05-11 12:38 ` David Howells
2021-05-12 10:07 ` Luis Henriques
2021-05-12 11:04 ` David Howells
2021-05-12 11:58 ` Luis Henriques
2021-05-12 12:26 ` Dominique Martinet
2021-05-12 12:57 ` What sort of inode state does ->evict_inode() expect to see? [was Re: 9p: fscache duplicate cookie] David Howells
2021-05-12 13:45 ` Al Viro
2021-05-12 14:12 ` David Howells [this message]
2021-05-14 16:10 ` Luis Henriques
2021-05-14 21:16 ` Dominique Martinet
2021-05-17 15:56 ` Luis Henriques
2021-05-17 17:39 ` Aneesh Kumar K.V
2021-05-12 11:09 ` 9p: fscache duplicate cookie David Howells
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=2919958.1620828730@warthog.procyon.org.uk \
--to=dhowells@redhat.com \
--cc=asmadeus@codewreck.org \
--cc=ericvh@gmail.com \
--cc=lhenriques@suse.de \
--cc=linux-fsdevel@vger.kernel.org \
--cc=lucho@ionkov.net \
--cc=v9fs-developer@lists.sourceforge.net \
--cc=viro@zeniv.linux.org.uk \
/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).