Messages in this thread | | | From | Linus Torvalds <> | Date | Thu, 29 Apr 2021 09:45:39 -0700 | Subject | Re: [GIT PULL] iomap: new code for 5.13-rc1 |
| |
On Wed, Apr 28, 2021 at 11:40 PM Rasmus Villemoes <linux@rasmusvillemoes.dk> wrote: > > > That also does explain the arguably odd %pD defaults: %pd came first, > > and then %pD came afterwards. > > Eh? 4b6ccca701ef5977d0ffbc2c932430dea88b38b6 added them both at the same > time.
Ahh, I looked at "git blame", and saw that file_dentry_name() was added later. But that turns out to have been an additional fix on top, not actually "later support".
Looking more at that code, I am starting to think that "file_dentry_name()" simply shouldn't use "dentry_name()" at all. Despite that shared code origin, and despite that similar letter choice (lower-vs-upper case), a dentry and a file really are very very different from a name standpoint.
And it's not the "a filename is the whale pathname, and a dentry has its own private dentry name" issue. It's really that the 'struct file' contains a _path_ - which is not just the dentry pointer, but the 'struct vfsmount' pointer too.
So '%pD' really *could* get the real path right (because it has all the required information) in ways that '%pd' fundamentally cannot.
At the same time, I really don't like printk specifiers to take any real locks (ie mount_lock or rename_lock), so I wouldn't want them to use the full d_path() logic.
Linus
| |