Date: Thu, 11 Jul 2002 23:41:04 -0700 From: Alfred Perlstein <bright@mu.org> To: Archie Cobbs <archie@dellroad.org> Cc: Bosko Milekic <bmilekic@unixdaemons.com>, Julian Elischer <julian@elischer.org>, Luigi Rizzo <rizzo@icir.org>, freebsd-net@FreeBSD.ORG Subject: Re: mbuf external buffer reference counters Message-ID: <20020712064104.GG97638@elvis.mu.org> In-Reply-To: <200207120519.g6C5JoH36140@arch20m.dellroad.org> References: <20020711222725.A5284@unixdaemons.com> <200207120519.g6C5JoH36140@arch20m.dellroad.org>
next in thread | previous in thread | raw e-mail | index | archive | help
* Archie Cobbs <archie@dellroad.org> [020711 22:30] wrote: > Bosko Milekic writes: > > > mbufs that referred to the same object were linked together. > > > I forget the details exactly. maybe someone else can remember.. > > > it did it without ref counts somehow.. > > > > Yes, this is in NetBSD still and it is very elegant. I remember > > looking at this a long time ago but to be honest, the reason I didn't > > implement it then first escaped me. However, thanks to David Malone's > > awesome commit messages, I found it: > > > > rev 1.53 of sys/sys/mbuf.h, extract: > > [...] > > "NetBSD's system of linked lists of mbufs was cosidered, but Alfred > > felt it would have locking issues when the kernel was made more > > SMP friendly." > > [...] > > > > I think it's almost clear now that there are, in fact, no SMP issues > > with it (we don't do per-cluster locking, or anything ridiculous like > > that), so unless Alfred has the reason again, I'll consider that method > > again instead. Thanks for the constructive feedback. > > That's a cool idea.. haven't looked at NetBSD but am imagining the > mbufs would be linked in a 'ring'. This works because you never > care how many references are, just whether there's one or more than > one, and this is easy to tell by examining the ring pointer. > I.e., you never have to iterate through the entire ring. That's true, but could someone explain how one can safely and effeciently manipulate such a structure in an SMP environment? I'm not saying it's impossible, I'm just saying it didn't seem intuative to me back then, as well as now. -- -Alfred Perlstein [alfred@freebsd.org] To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020712064104.GG97638>