On Aug 2, 2014, at 1:44 AM, Xin Li <delp...@delphij.net> wrote:

> Signed PGP part
> On 8/1/14 8:59 PM, Justin T. Gibbs wrote:
> > On Aug 1, 2014, at 4:33 PM, Xin LI <delp...@freebsd.org> wrote:
> >
> >> Author: delphij Date: Fri Aug  1 22:33:23 2014 New Revision:
> >> 269404 URL: http://svnweb.freebsd.org/changeset/base/269404
> >>
> >> Log: Split gethrtime() and gethrtime_waitfree() and make the
> >> former use nanouptime() instead of getnanouptime().
> >> nanouptime(9) provides more precise result at expense of being
> >> slower.
> >>
> >> In r269223, gethrtime() is used as creation time of dbuf, which
> >> in turn acts as portion of lookup key to maintain AVL invariant
> >> where there can not be duplicate items.  Before this change,
> >> gethrtime() have preferred better execution time by sacrificing
> >> precision, which may lead to panic on busy systems with:
> >>
> >> panic: avl_find() succeeded inside avl_add()
> >
> > I don’t believe that r269223 requires a temporal ordering of the
> > dbufs in the AVL, just unique entries.  So why use an expensive
> > operation like getting high resolution time?  Can’t we just use a
> > PCPU counter and tag the dbufs with "CPU# << 48 | PCPU_counter”?
> 
> What do you think about D521?  (Alexander suggested similar
> implementation).
> 
> https://phabric.freebsd.org/D521
> 
> Cheers,

Seems reasonable to me.

—
Justin

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to