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