Re: [PATCH v2 4/4] perf report: support record trace file decompression

From: Jiri Olsa
Date: Tue Feb 12 2019 - 08:08:55 EST


On Mon, Feb 11, 2019 at 11:25:00PM +0300, Alexey Budankov wrote:

SNIP

> size_t perf_session__zstd_copy(void *to __maybe_unused,
> @@ -533,6 +646,8 @@ void perf_tool__fill_defaults(struct perf_tool *tool)
> tool->time_conv = process_event_op2_stub;
> if (tool->feature == NULL)
> tool->feature = process_event_op2_stub;
> + if (tool->compressed == NULL)
> + tool->compressed = perf_session__process_compressed_event;
> }
>
> static void swap_sample_id_all(union perf_event *event, void *data)
> @@ -1469,7 +1584,8 @@ static s64 perf_session__process_user_event(struct perf_session *session,
> int fd = perf_data__fd(session->data);
> int err;
>
> - dump_event(session->evlist, event, file_offset, &sample);
> + if (event->header.type != PERF_RECORD_COMPRESSED)
> + dump_event(session->evlist, event, file_offset, &sample);
>
> /* These events are processed right away */
> switch (event->header.type) {
> @@ -1522,6 +1638,11 @@ static s64 perf_session__process_user_event(struct perf_session *session,
> return tool->time_conv(session, event);
> case PERF_RECORD_HEADER_FEATURE:
> return tool->feature(session, event);
> + case PERF_RECORD_COMPRESSED:
> + err = tool->compressed(session, event, file_offset);
> + if (err)
> + dump_event(session->evlist, event, file_offset, &sample);

I'm not sure about having compressed callback at all, but maybe
it could be usefull for inject, to get the compressed data..?

I assume inject is working now and it will get you the uncompressed
perf.data?

jirka