Date: Tue, 06 Jun 1995 01:22:56 -0700 From: David Greenman <davidg@Root.COM> To: Eric Hoffman <hoffman@ipsilon.com> Cc: hackers@freebsd.org Subject: Re: external storage for mbufs Message-ID: <199506060822.BAA00244@corbin.Root.COM> In-Reply-To: Your message of "Mon, 05 Jun 95 19:38:30 PDT." <199506060238.TAA06992@servo.ipsilon.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> > #ifdef notyet > #define MFREE(m, n) \ > ....general purpose deallocator which uses ext_free function pointer.. > #else /* notyet */ > #define MFREE(m, nn) \ > ....deallocator which assumes M_EXT is always part of the cluster system... > #endif > >could someone lend some context to why the following code from >mbuf.h is conditionalized the way it is? > >an idle recompile with the new code caused damage...what other >conditions in the system exist that make it not yet ready? It's not too difficult to get it to work, but the main problem is that reference count tracking must be disabled when there is an "external" free routine. This is because the reference counts are all in an array that is indexed by the address of the data (divided by the appropriate constant). If there is an external free routine, then the memory won't be the 'managed' memory that is in the special address region...thus leading to an array index that is out of bounds...causing a panic. I had this working in 1.1.5 and was using it to speed up NFS. I chose not to bring that change forward (it was too much of a hack). -DG
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199506060822.BAA00244>