Date: Thu, 28 Nov 2002 14:44:39 -0500 From: "David E. Cross" <crossd@cs.rpi.edu> To: Alfred Perlstein <bright@mu.org> Cc: "David E. Cross" <crossd@cs.rpi.edu>, freebsd-fs@freebsd.org, crossd@cs.rpi.edu Subject: Re: openafs question Message-ID: <200211281944.gASJidO05245@monica.cs.rpi.edu> In-Reply-To: Message from Alfred Perlstein <bright@mu.org> of "Thu, 28 Nov 2002 04:35:50 PST." <20021128123550.GM16066@elvis.mu.org> References: <200211281128.gASBS2g04424@monica.cs.rpi.edu> <20021128123550.GM16066@elvis.mu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> Have getnewvnode add a flag to the vnode noting that it's meant for the
> global list, otherwise store a "free()" callback in the vnode to be called?
I don't think I understand. In the current code "getnewvnode" is never
called. What it has is a giant circularly linked list of tvc's, where a
TVC is defined as something like:
struct tvc {
misc afs stuff;
struct free *next;
struct vnode v; /* note, _not_ a vnode *, that would make this easy */
}
Whenever it runs out of vnodes it allocates a new tvc (up until "-stat"
parameter). Fills in the "stuff", and shoves it at the top of the tvc used
circle-queue (null-ing out the "next" parameter.. so it maintains its own
free/used lists outside of the vnode). When it is freed it moves it onto the
free list and moves it to the tail of the cirleq(I think; I'm not 100% sure
on the moving it to the tail of the circleq at this point).
--
David Cross | email: crossd@cs.rpi.edu
Lab Director | Rm: 308 Lally Hall
Rensselaer Polytechnic Institute, | Ph: 518.276.2860
Department of Computer Science | Fax: 518.276.4033
I speak only for myself. | WinNT:Linux::Linux:FreeBSD
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-fs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200211281944.gASJidO05245>
