From: Al Viro <viro@zeniv.linux.org.uk>
To: Jeff Layton <jlayton@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Ilya Dryomov <idryomov@gmail.com>,
ceph-devel@vger.kernel.org,
Linux List Kernel Mailing <linux-kernel@vger.kernel.org>
Subject: Re: [GIT PULL] Ceph fixes for 5.1-rc7
Date: Fri, 26 Apr 2019 22:28:45 +0100 [thread overview]
Message-ID: <20190426212845.GC2217@ZenIV.linux.org.uk> (raw)
In-Reply-To: <fd4327a68e79540e9faee40bd198dfee373e59fb.camel@kernel.org>
On Fri, Apr 26, 2019 at 04:49:24PM -0400, Jeff Layton wrote:
> Got it, thanks. Why use an atomic_t for the refcount if it's always
> accessed under spinlock?
_Which_ spinlock? The whole reason for refcounts is that many dentries
might end up with shared external name. So ->d_lock on one of them
won't do anything to accesses via another...
> > What I don't understand is why would anyone want to mess with
> > name snapshots for dentry_path() lookalikes...
>
> Mostly because the place where the ceph code needs to use and free these
> strings is rather far removed from where they are created. It simplifies
> that part if we can access and free them all in the same way.
>
> I was planning to just use name_snapshots universally for that purpose,
> but they have a rather specific method of freeing things that is hard to
> duplicate if you don't have a dentry to clone.
>
> Probably that means I'm approaching this problem in the wrong way and
> need to do it differently.
For short names snapshot will put the copy into your variable, normally
on the stack frame. So it doesn't really help if you want to keep that
stuff around. Again, dentries with short names have those stored inside
the dentry and for anything long-term you will need to copy that data;
otherwise rename() will happily change those under you.
If you want to deal with pathnames, do __getname() + a loop similar to
that in dentry_path() et.al. All there is to it. Snapshots are
for situations when you want a reasonably short-term access to
name of specific dentry you have a reference to and do not want
to do any allocations.
next prev parent reply other threads:[~2019-04-26 21:28 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-25 17:47 [GIT PULL] Ceph fixes for 5.1-rc7 Ilya Dryomov
2019-04-25 18:02 ` Linus Torvalds
2019-04-25 18:21 ` Al Viro
2019-04-25 18:24 ` Linus Torvalds
2019-04-25 18:31 ` Al Viro
2019-04-25 18:36 ` Jeff Layton
2019-04-25 18:23 ` Jeff Layton
2019-04-25 20:09 ` Al Viro
2019-04-26 16:25 ` Jeff Layton
2019-04-26 16:36 ` Linus Torvalds
2019-04-26 16:43 ` Linus Torvalds
2019-04-26 17:01 ` Al Viro
2019-04-26 17:08 ` Linus Torvalds
2019-04-26 17:11 ` Al Viro
2019-04-26 20:49 ` Jeff Layton
2019-04-26 21:28 ` Al Viro [this message]
2019-04-26 16:50 ` Al Viro
2019-04-26 17:30 ` Jeff Layton
2019-04-28 4:38 ` Al Viro
2019-04-28 13:27 ` Jeff Layton
2019-04-28 14:48 ` Al Viro
2019-04-28 15:47 ` Jeff Layton
2019-04-28 15:52 ` Al Viro
2019-04-28 16:18 ` Jeff Layton
2019-04-28 16:40 ` Al Viro
2019-04-25 18:35 ` pr-tracker-bot
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=20190426212845.GC2217@ZenIV.linux.org.uk \
--to=viro@zeniv.linux.org.uk \
--cc=ceph-devel@vger.kernel.org \
--cc=idryomov@gmail.com \
--cc=jlayton@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox