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
signature.asc
Description: Message signed with OpenPGP using GPGMail