Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Jan 1998 21:25:26 -0500 (EST)
From:      "John S. Dyson" <dyson@FreeBSD.ORG>
To:        tlambert@primenet.com (Terry Lambert)
Cc:        dyson@FreeBSD.ORG, scottm@cs.ucla.edu, freebsd-current@FreeBSD.ORG
Subject:   Re: stable current?
Message-ID:  <199801260225.VAA00373@dyson.iquest.net>
In-Reply-To: <199801252347.QAA17876@usr02.primenet.com> from Terry Lambert at "Jan 25, 98 11:47:31 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
Terry Lambert said:
> 
> Were you out here (Bay Area) last Thursday for McKusick's talk at
> Network Appliance on FS stacking?  I didn't go to that one, but I
> talked to him for about half an hour about a month ago, and he
> seemed to agree with most of what I identified (plus added a thing
> or two that I hadn't thought of before).
>
I identified almost everything that you have also.

> 
> The single biggest problem has *got* to be alias buffers hung off top and
> bottom vnodes in a stack.  The vop_getpages/vop_putpages interface needs
> to become mandatory for all FS's.  No more sneaking around it in the
> vnode pager.  That should solve most of the nullfs and single-layer
> stack FS problems up front, so long as you don't expect locking to
> work.  A real fix will require a VOP to ask for the backing vnode where
> the buffers and locks are hung off of; until then, I don't think unionfs
> has a chance of being safe to use.
> 
Well, you are right, and the code supports it.  PLEASE look at the code
before you whine about the way things should be.  I really don't think
that you look at how things work before you complain.  There is some
(default) generic code in the vnode pager, that works.  You seem to be
talking about the way things were in 2.0.  (Over 2yrs ago.)

Putpages currently uses the VOP_WRITE entry point in the filesystems.  Each
filesystem can support it's own putpages if that is better in some way or more
efficient.  Old filesystems can use the generic code.  Likewise, getpages.
Note how I fixed nfs_getpages, in order to fix some deadlock issues.  Things
are pretty much interchangeable, because we truly do use the VM object for
all (VREG) filesystem buffering.

It does NOT violate layering to use VOP_READ/VOP_WRITE or the filesystem
strategy, to emulate getpages and putpages.  There is no bypassing of the
filesystem anymore in our code.  There is almost NO difference between a
getpages/ putpages interface, and the nocopy version of VOP_READ/VOP_WRITE.

Swap_pager does talk directly to the underlying device, but that is a
different story.  I also don't want to hear about how that should be
redone -- there are endless deadlock conditions and performance issues.
Geesh, ccd as it is isn't even appropriate for swap pager (it will work,
sort of.)

I strongly suggest UTSL.

-- 
John                  | Never try to teach a pig to sing,
dyson@freebsd.org     | it just makes you look stupid,
jdyson@nc.com         | and it irritates the pig.



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