cvs commit: src/sys/kern vfs_syscalls.c

Scott Long scottl at samsco.org
Sat Mar 3 05:15:12 UTC 2007


John Baldwin wrote:
> On Thursday 22 February 2007 12:17, Kostik Belousov wrote:
>> On Tue, Feb 20, 2007 at 11:21:59AM -0500, John Baldwin wrote:
>>> On Tuesday 20 February 2007 09:49, Kostik Belousov wrote:
>>>> On Mon, Feb 19, 2007 at 06:39:58PM -0500, John Baldwin wrote:
>>>>> On Monday 19 February 2007 05:56, Konstantin Belousov wrote:
>>>>>> kib         2007-02-19 10:56:10 UTC
>>>>>>
>>>>>>   FreeBSD src repository
>>>>>>
>>>>>>   Modified files:
>>>>>>     sys/kern             vfs_syscalls.c 
>>>>>>   Log:
>>>>>>   Remove union_dircheckp hook, it is not needed by new unionfs code anymore.
>>>>>>   As consequence, getdirentries() no longer needs to drop/reacquire
>>>>>>   directory vnode lock, that would allow it to be reclaimed in between.
>>>>> I think there is at least one more copy of getdirentries() under sys/compat,
>>>>> possibly multiple.  Are you going to fix this in all of them?
>>>> Could you, please, point out where is it ? My grep told me that I removed
>>>> all references to the union_dircheckp, and I think that getdirentries() code
>>>> had to have references to it. My change modified two syscalls: getdirentries()
>>>> and ogetdirentries().
>>> Well, I did find at least 3 ABIs (Linux, svr4, and ibcs2) that do their own
>>> wrapper around VOP_READDIR(), but none of them had the union check in them.
>> As result, "mount -o union" does not work for compat binaries.
>>
>>> Do you know why the ABIs use cookies for VOP_READDIR() but getdirentries()
>>> doesn't?
>> No, and it seems that cookies, as well as vfs_syscalls.c avoidance of cookies
>> (together with union_dircheckp) go back to at least 1994/1997 years, and
>> Lite-2 import (see commit logs for rev. 1.9 and 1.54 of vfs_syscalls.c).
> 
> What would be nice would be to have a kern_getdirentries() that took a
> function pointer that took a directory record and did the actual
> conversion + UIO so we could cut down on the duplicated code.
> 

Actually, Linux does this, and it's a mess IMHO.  The cure is much worse
than the disease.

Scott



More information about the cvs-src mailing list