Re: [patch 9/9] pref: session: Break event ordering when timestamps are missing

From: Ian Munsie
Date: Thu Dec 09 2010 - 22:36:45 EST


Excerpts from Thomas Gleixner's message of Fri Dec 10 00:58:10 +1100 2010:
> On Thu, 9 Dec 2010, Ian Munsie wrote:
> > Excerpts from Thomas Gleixner's message of Tue Dec 07 12:49:04 UTC 2010:
> > > Allow the session client to specify that event ordering should be
> > > stopped when not all events have time stamps.
> >
> > > /* These events are processed right away */
> > > switch (event->header.type) {
> > > case PERF_RECORD_HEADER_ATTR:
> > > - return ops->attr(event, session);
> > > + /* This updates session->sample_id_all */
> > > + ret = ops->attr(event, session);
> > > + /* Break ordering if sample_id_all is false */
> > > + if (ops->ordering_requires_timestamps &&
> > > + ops->ordered_samples && !session->sample_id_all) {
> > > + session->ordered_samples.next_flush = ULLONG_MAX;
> > > + flush_sample_queue(session, ops);
> > > + ops->ordered_samples = false;
> > > + }
> > > + return ret;
> > Since the fall back isn't triggered, not only are COMM and MMAP events
> > processed first (from patch 2 in this series), but EXIT will as well,
> > which causes no userspace events to be attributed.
>
> So we need to check this in every event processing path? Or do we have
> for this kind of processing some other method which allows us to
> disable the ordered_samples bit once ?

Any reason we couldn't put it in the perf_session__new function? It
means passing the event_ops to it as well, but I can't see any reason
why not to: