Date: Fri, 02 Mar 2007 22:14:50 -0700 From: Scott Long <scottl@samsco.org> To: John Baldwin <jhb@FreeBSD.org> Cc: Kostik Belousov <kostikbel@gmail.com>, cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/kern vfs_syscalls.c Message-ID: <45E9044A.3090300@samsco.org> In-Reply-To: <200702221238.11641.jhb@freebsd.org> References: <200702191056.l1JAuASc059200@repoman.freebsd.org> <200702201122.00390.jhb@freebsd.org> <20070222171720.GI39168@deviant.kiev.zoral.com.ua> <200702221238.11641.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45E9044A.3090300>