From: Jeff Layton <jlayton@kernel.org>
To: stsp <stsp2@yandex.ru>, linux-kernel@vger.kernel.org
Cc: Chuck Lever <chuck.lever@oracle.com>,
Alexander Viro <viro@zeniv.linux.org.uk>,
Christian Brauner <brauner@kernel.org>,
linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 2/3] fd/locks: allow get the lock owner by F_OFD_GETLK
Date: Tue, 20 Jun 2023 09:19:58 -0400 [thread overview]
Message-ID: <d0c18369245db91a3b78017fabdc81417418af67.camel@kernel.org> (raw)
In-Reply-To: <d70b6831-3443-51d0-f64c-6f6996367a85@yandex.ru>
On Tue, 2023-06-20 at 17:34 +0500, stsp wrote:
> 20.06.2023 17:02, Jeff Layton пишет:
> > Suppose I start a process (call it pid 100), and then spawn a thread
> > (101). I then have 101 open a file and set an OFD lock on it (such that
> > the resulting fl_pid field in the file_lock is set to 101).
>
> How come?
> There are multiple places in locks.c
> with this line:
> fl->fl_pid = current->tgid;
>
> And I've yet to see the line like:
> fl->fl_pid = current->pid;
> Its simply not there.
>
> No, we put tgid into l_pid!
> tgid will still be 100, no matter how
> many threads you spawn or destroy.
> Or what am I misseng?
>
>
> > That's just one example, of course. The underlying problem is that OFD
> > locks are not owned by processes in the same way that traditional POSIX
> > locks are, so reporting a pid there is unreliable, at best.
> But we report tgid.
> It doesn't depend on threads.
> I don't understand. :)
Good point. I had forgotten that we stuffed the l_pid in there. So in
principle, that example would be OK. But...there is still the problem of
passing file descriptors via unix sockets.
The bottom line is that these locks are specifically not owned by a
process, so returning the l_pid field is unreliable (at best). There is
no guarantee that the pid returned will still represent the task that
set the lock.
You may want to review this article. They're called "File-private" locks
here, but the name was later changed to "Open file description" (OFD)
locks:
https://lwn.net/Articles/586904/
The rationale for why -1 is reported is noted there.
--
Jeff Layton <jlayton@kernel.org>
next prev parent reply other threads:[~2023-06-20 13:21 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-20 9:55 [PATCH 0/3] RFC: F_OFD_GETLK should provide more info Stas Sergeev
2023-06-20 9:55 ` [PATCH 1/3] fs/locks: F_UNLCK extension for F_OFD_GETLK Stas Sergeev
2023-06-20 10:46 ` Jeff Layton
2023-06-20 11:00 ` stsp
2023-06-20 11:15 ` Jeff Layton
2023-06-21 15:24 ` stsp
2023-06-20 9:55 ` [PATCH 2/3] fd/locks: allow get the lock owner by F_OFD_GETLK Stas Sergeev
2023-06-20 10:51 ` Jeff Layton
2023-06-20 10:57 ` stsp
2023-06-20 11:12 ` Jeff Layton
2023-06-20 11:45 ` stsp
2023-06-20 12:02 ` Jeff Layton
2023-06-20 12:34 ` stsp
2023-06-20 13:19 ` Jeff Layton [this message]
2023-06-20 13:39 ` stsp
2023-06-20 13:46 ` Matthew Wilcox
2023-06-20 13:47 ` stsp
2023-06-20 14:36 ` Matthew Wilcox
2023-06-20 15:45 ` stsp
2023-06-20 17:05 ` Matthew Wilcox
2023-06-21 2:54 ` stsp
2023-06-23 13:10 ` David Laight
2023-06-20 13:58 ` Jeff Layton
2023-06-21 6:57 ` stsp
2023-06-21 10:35 ` Jeff Layton
2023-06-21 10:42 ` stsp
2023-06-21 11:05 ` Jeff Layton
2023-06-21 11:22 ` stsp
2023-06-21 11:26 ` stsp
2023-06-23 15:25 ` Christian Brauner
2023-06-23 17:18 ` stsp
2023-06-27 16:00 ` Jeff Layton
2023-06-27 16:20 ` stsp
2023-06-20 9:55 ` [PATCH 3/3] selftests: add OFD lock tests Stas Sergeev
2023-06-20 11:06 ` 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=d0c18369245db91a3b78017fabdc81417418af67.camel@kernel.org \
--to=jlayton@kernel.org \
--cc=brauner@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stsp2@yandex.ru \
--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).