perf session: Fix loading of compressed data split across adjacent records
Fix decompression failure found during the loading of compressed trace collected on larger scale systems (>48 cores). The error happened due to lack of decompression space for a mmaped buffer data chunk split across adjacent PERF_RECORD_COMPRESSED records. $ perf report -i bt.16384.data --stats failed to decompress (B): 63869 -> 0 : Destination buffer is too small user stack dump failure Can't parse sample, err = -14 0x2637e436 [0x4080]: failed to process type: 9 Error: failed to process sample $ perf test 71 71: Zstd perf.data compression/decompression : Ok Signed-off-by: Alexey Budankov <alexey.budankov@linux.intel.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/4d839e1b-9c48-89c4-9702-a12217420611@linux.intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:

committed by
Arnaldo Carvalho de Melo

parent
146540fb54
commit
872c8ee8f0
@@ -99,8 +99,8 @@ size_t zstd_decompress_stream(struct zstd_data *data, void *src, size_t src_size
|
||||
while (input.pos < input.size) {
|
||||
ret = ZSTD_decompressStream(data->dstream, &output, &input);
|
||||
if (ZSTD_isError(ret)) {
|
||||
pr_err("failed to decompress (B): %ld -> %ld : %s\n",
|
||||
src_size, output.size, ZSTD_getErrorName(ret));
|
||||
pr_err("failed to decompress (B): %ld -> %ld, dst_size %ld : %s\n",
|
||||
src_size, output.size, dst_size, ZSTD_getErrorName(ret));
|
||||
break;
|
||||
}
|
||||
output.dst = dst + output.pos;
|
||||
|
Reference in New Issue
Block a user