From owner-cvs-all@FreeBSD.ORG Thu Nov 10 15:38:52 2005 Return-Path: X-Original-To: cvs-all@FreeBSD.org Delivered-To: cvs-all@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2DAA816A41F; Thu, 10 Nov 2005 15:38:52 +0000 (GMT) (envelope-from phk@critter.freebsd.dk) Received: from phk.freebsd.dk (phk.freebsd.dk [130.225.244.222]) by mx1.FreeBSD.org (Postfix) with ESMTP id C1EB943D6D; Thu, 10 Nov 2005 15:38:51 +0000 (GMT) (envelope-from phk@critter.freebsd.dk) Received: from critter.freebsd.dk (unknown [192.168.48.2]) by phk.freebsd.dk (Postfix) with ESMTP id 25A2FBC66; Thu, 10 Nov 2005 15:38:47 +0000 (UTC) To: Scott Long From: "Poul-Henning Kamp" In-Reply-To: Your message of "Thu, 10 Nov 2005 07:55:08 MST." <43735F4C.7070307@samsco.org> Date: Thu, 10 Nov 2005 16:38:47 +0100 Message-ID: <6146.1131637127@critter.freebsd.dk> Sender: phk@critter.freebsd.dk Cc: Doug White , cvs-src@FreeBSD.org, src-committers@FreeBSD.org, Doug White , cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/kern vfs_subr.c src/sys/fs/devfs devfs_vnops.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Nov 2005 15:38:52 -0000 In message <43735F4C.7070307@samsco.org>, Scott Long writes: >Poul-Henning Kamp wrote: >> In message <437351BB.6000103@samsco.org>, Scott Long writes: >> >> >>>Putting the cookie into the dirent means either changing the size of the >>>dirent struct and breaking the userland ABI (almost as bad as changing >>>the size of stat, but not quite), or making a 'kdirent' struct and then >>>manually shifting and copying it to a dirent struct. >> >> >> Not really that bad. >> >> My idea was to make a >> struct kdirent { >> struct dirent foo; >> cookie stuff bar; >> } >> >> Filesystems would call vfs_read_dirent() with a struct kdirent and >> depending on the userland/kernel flag in the uio vfs_read_dirent() >> would copy either the entire kdirent or only the userspace dirent. >> >>>What I really think this is is a ploy by PHK to get someone motivated to >>>fix it for him ;-) >> >> I'm generally in favour of people doing work so I don't have to but >> in this particular case that was not the motivation :-) >> >> (At least you can't prove anything!) >> >> Poul-Henning >> > >I still don't see how this is supposed to work. VOP_READDIR() doesn't >return the dirent array to the caller, it's directly copied to the user >buffer. vfs_read_dirent() is called from the filesystem, and determines what to copy where. If the copy is to kernel space, the kdirent will be used and NFS gets its cookies. If the copy is to user space, the dirent will be used and the ABI and API is unchanged. -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence.