Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 01 May 2001 01:28:10 -0700
From:      Terry Lambert <tlambert2@mindspring.com>
To:        Poul-Henning Kamp <phk@critter.freebsd.dk>
Cc:        Kirk McKusick <mckusick@mckusick.com>, Robert Watson <rwatson@FreeBSD.ORG>, Julian Elischer <julian@elischer.org>, Rik van Riel <riel@conectiva.com.br>, freebsd-hackers@FreeBSD.ORG, Matt Dillon <dillon@earth.backplane.com>, David Xu <bsddiy@21cn.com>
Subject:   Re: vm balance
Message-ID:  <3AEE739A.A69A52FE@mindspring.com>
References:  <33029.987575619@critter>

next in thread | previous in thread | raw e-mail | index | archive | help
Poul-Henning Kamp wrote:
> 
> In message <200104180540.WAA58303@beastie.mckusick.com>, Kirk
> McKusick writes:
> 
> >Every vnode in the system has an associated object.
> 
> No: device vnodes dont...
> 
> I think the correct solution to that is to move devices away from
> vnodes and into the fdesc layer, just like fifo's and sockets.

This is really, likewise, a bad idea.

The "struct fileops" has been a problem from day one.  It
exists for devices because we still have "specfs", and have
not moved over to a "devfs" that uses vnodes instead of using
strategy routines invoked from a "struct fileops *" dereference.

The code was smeared into the FIFO/socket/IPC code as a poor
man's integration to get something working.

When that happened, the ability to do normal things like
set ownership, permissions, etc., on things like FIFOs
disappeared.

FreeBSD is much poorer with regard to full compliance with
POSIX semantics on things like F_ fcntl() arguments and the
like when applied to sockets.  Linux, Solaris, AIX, and other
POSIX and Single UNIX Specification compliant OSs don't suffer
these same problems.

Perhaps one of the most annoying things about FreeBSD is the
inability to perform advisory locking on anything by true
vnode objects... and then only if the underlying VFS has an
advisory lock chain hung off of some private structure,
which can't be rescued except through the evils of POSIX
locking semantics.

Many applications use advisory lock chains off of devices to
communicate region protection information not directly related
to really protecting the resource.

Similarly, "struct fileops" is the main culprit, to my mind,
behind the inability of FreeBSD to support cloning devices,
such as that needed for multiple virtual machine instances in
vmware to work as it does in Linux and other first-class host
OSs.

-- Terry

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




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