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>