Skip site navigation (1)Skip section navigation (2)
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>