Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 7 Dec 2008 11:43:02 -0800
From:      "Peter Wemm" <peter@wemm.org>
To:        "Joe Marcus Clarke" <marcus@freebsd.org>
Cc:        Ed Schouten <ed@80386.nl>, arch@freebsd.org
Subject:   Re: RFC: New VOP to translate vnode to its component name
Message-ID:  <e7db6d980812071143x4d395c7bt3f871e95430efc94@mail.gmail.com>
In-Reply-To: <1228670197.69753.24.camel@shumai.marcuscom.com>
References:  <1228667168.69753.16.camel@shumai.marcuscom.com> <20081207170354.GI18652@hoeg.nl> <1228670197.69753.24.camel@shumai.marcuscom.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Dec 7, 2008 at 9:16 AM, Joe Marcus Clarke <marcus@freebsd.org> wrote:
> On Sun, 2008-12-07 at 18:03 +0100, Ed Schouten wrote:
>> Hello Joe,
>>
>> * Joe Marcus Clarke <marcus@FreeBSD.org> wrote:
>> > Here is a patch to HEAD, along with a man page, for VOP_CNP.
>>
>> Maybe this should be called VOP_COMPONENTNAME? I know, it's not as short
>> as VOP_CNP, but is probably less cryptic to people who are trying to
>> figure out how the VFS works.
>
> I'm open to a new name, but VOP_COMPONENTNAME does seem a bit unwieldy.
> What about VOP_VPTONAME (in the same vein as VOP_VPTOFH)?
>
> Joe

Well, you already know I love the idea.  Valgrind "knows" that you can
obtain the pathname from a fd or mmap address reliably at any time
because of procfs on linux, so its code is structured with that
assumption.

Using procfs (on 4.x and 6.x) or the kinfo stuff on 7.x+ sort of
works, but it quickly becomes unusable if any paths involve NFS.  nfs
times out its cached items very quickly.

Anyway, I see this as a good first step.  I very much want to see a
real vop_default implementation that does the readdir("..") method to
fill in the gaps. It isn't particularly important to me if
vn_fullpath() recovers the original pathname or not, so long as it can
find *a* valid pathname that will work.

As for names.. VOP_CNP doesn't tell me what it does at a glance.  Ideas:
VOP_VPTOCNP  (vnode to component name, or VOP_VNTOCNP)
VOP_RLOOKUP (reverse lookup)

We have precedent for the first form.  VOP_FHTOVP().

I don't think VOP_VPTOCNP() is too unwieldy and I think it would be a
little more intuitive to a casual observer.  I don't want to get
trapped in a bikeshed sized To:/CC: list over it though.  I'd rather
see it committed to head and get some progress.

BTW: at work we do extensive open-by-filehandle stuff on NFS.  For the
vast majority of vnodes on those machines, there never was a name
cache entry.  It would be priceless if the vop_default readdir(..)
method could discover those names in procstat etc.

-- 
Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com; KI6FJV
"All of this is for nothing if we don't go to the stars" - JMS/B5
"If Java had true garbage collection, most programs would delete
themselves upon execution." -- Robert Sewell



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?e7db6d980812071143x4d395c7bt3f871e95430efc94>