Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Apr 2008 10:03:42 -0700
From:      Alfred Perlstein <alfred@freebsd.org>
To:        Pawel Jakub Dawidek <pjd@FreeBSD.org>
Cc:        rwatson@freebsd.org, Roman Divacky <rdivacky@freebsd.org>, kib@freebsd.org, freebsd-arch@freebsd.org
Subject:   Re: final decision about *at syscalls
Message-ID:  <20080416170341.GN95731@elvis.mu.org>
In-Reply-To: <20080416165612.GA31094@garage.freebsd.pl>
References:  <20071218092222.GA9695@freebsd.org> <200712201138.56423.jhb@freebsd.org> <20080412112019.GI45299@garage.freebsd.pl> <200804161014.41025.jhb@freebsd.org> <20080416165612.GA31094@garage.freebsd.pl>

next in thread | previous in thread | raw e-mail | index | archive | help
* Pawel Jakub Dawidek <pjd@FreeBSD.org> [080416 09:56] wrote:
> On Wed, Apr 16, 2008 at 10:14:40AM -0400, John Baldwin wrote:
> > On Saturday 12 April 2008 07:20:19 am Pawel Jakub Dawidek wrote:
> > > From what you write John, #1 is a better choice than #2. If you want to
> > > avoid races, you can pass already locked vnode. In case of file
> > > descriptors, if p_fd is not locked another thread can close and open
> > > different directory under the same descriptor number.
> > 
> > Did you read Robert's paper?  Do you not realize that the kernel copying data 
> > in from userland multiple times and having it change in between is very bug 
> > prone?
> 
> Believe me I'm fully aware of the problems Robert described in his
> paper. With vnode approach where do you have more data copying between
> kernel and userland?
> 
> File descriptor proposal works like this:
> 
> userland
> 	openat(fd, path)
> kernel
> 	NDINIT_AT(&vp, path, fd);
> 	/* operate on vp */
> 
> Vnode proposal works this way:
> 
> userland
> 	openat(fd, path)
> kernel
> 	dvp = file_descriptor_to_vnode(fd);
> 	NDINIT_AT(&vp, path, dvp);
> 	/* operate on vp */

My first impression is that passing fp to vp code is a layering
violation and bad news.  I need to think about it more.


-- 
- Alfred Perlstein



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