mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 20:14:06 +02:00
perf session: Extra logging for failed to process events
Print log information in ordered event processing so that the cause of finished round failing is clearer. Print the event name along with its number when an event isn't processed. Add extra detail about where the failure happened. The following log lines come from running `perf data convert`. Before: 0xa250 [0x10]: failed to process type: 80 After: 0xa250 [0x10]: piped event processing failed for event of type: FEATURE (80) Signed-off-by: Ian Rogers <irogers@google.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
parent
598de36837
commit
cdaebccc1c
|
|
@ -131,10 +131,17 @@ static int ordered_events__deliver_event(struct ordered_events *oe,
|
|||
{
|
||||
struct perf_session *session = container_of(oe, struct perf_session,
|
||||
ordered_events);
|
||||
int ret = perf_session__deliver_event(session, event->event,
|
||||
session->tool, event->file_offset,
|
||||
event->file_path);
|
||||
|
||||
return perf_session__deliver_event(session, event->event,
|
||||
session->tool, event->file_offset,
|
||||
event->file_path);
|
||||
if (ret) {
|
||||
pr_err("%#" PRIx64 " [%#x]: ordered event processing failed (%d) for event of type: %s (%d)\n",
|
||||
event->file_offset, event->event->header.size, ret,
|
||||
perf_event__name(event->event->header.type),
|
||||
event->event->header.type);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
struct perf_session *__perf_session__new(struct perf_data *data,
|
||||
|
|
@ -2110,8 +2117,10 @@ static int __perf_session__process_pipe_events(struct perf_session *session)
|
|||
}
|
||||
|
||||
if ((skip = perf_session__process_event(session, event, head, "pipe")) < 0) {
|
||||
pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n",
|
||||
head, event->header.size, event->header.type);
|
||||
pr_err("%#" PRIx64 " [%#x]: piped event processing failed for event of type: %s (%d)\n",
|
||||
head, event->header.size,
|
||||
perf_event__name(event->header.type),
|
||||
event->header.type);
|
||||
err = -EINVAL;
|
||||
goto out_err;
|
||||
}
|
||||
|
|
@ -2225,8 +2234,10 @@ static int __perf_session__process_decomp_events(struct perf_session *session)
|
|||
if (size < sizeof(struct perf_event_header) ||
|
||||
(skip = perf_session__process_event(session, event, decomp->file_pos,
|
||||
decomp->file_path)) < 0) {
|
||||
pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n",
|
||||
decomp->file_pos + decomp->head, event->header.size, event->header.type);
|
||||
pr_err("%#" PRIx64 " [%#x]: decompress event processing failed for event of type: %s (%d)\n",
|
||||
decomp->file_pos + decomp->head, event->header.size,
|
||||
perf_event__name(event->header.type),
|
||||
event->header.type);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
|
@ -2382,8 +2393,9 @@ reader__read_event(struct reader *rd, struct perf_session *session,
|
|||
if (size < sizeof(struct perf_event_header) ||
|
||||
(skip = rd->process(session, event, rd->file_pos, rd->path)) < 0) {
|
||||
errno = -skip;
|
||||
pr_err("%#" PRIx64 " [%#x]: failed to process type: %d [%m]\n",
|
||||
pr_err("%#" PRIx64 " [%#x]: processing failed for event of type: %s (%d) [%m]\n",
|
||||
rd->file_offset + rd->head, event->header.size,
|
||||
perf_event__name(event->header.type),
|
||||
event->header.type);
|
||||
err = skip;
|
||||
goto out;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user