Re: [PATCH v12 3/3]: perf record: extend trace writing to multi AIO

From: Alexey Budankov
Date: Thu Oct 11 2018 - 12:24:43 EST


On 11.10.2018 16:46, Jiri Olsa wrote:
> On Tue, Oct 09, 2018 at 11:59:31AM +0300, Alexey Budankov wrote:
>
> SNIP
>
>> @@ -709,12 +729,13 @@ static int record__mmap_read_evlist(struct record *rec, struct perf_evlist *evli
>> goto out;
>> }
>> } else {
>> + int idx;
>> /*
>> * Call record__aio_sync() to wait till map->data buffer
>> * becomes available after previous aio write request.
>> */
>> - record__aio_sync(map);
>> - if (perf_mmap__aio_push(map, rec, record__aio_pushfn, &off) != 0) {
>> + idx = record__aio_sync(map, false);
>
> looks like record__aio_sync can return -1,
> how is it not breaking the perf_mmap__aio_push call below?

Currently -1 may be returned only when calling with
sync_all==true i.e. record__aio_sync(, true).

Thanks,
Alexey

>
>> + if (perf_mmap__aio_push(map, rec, idx, record__aio_pushfn, &off) != 0) {
>> record__aio_set_pos(trace_fd, off);
>> rc = -1;
>> goto out;
>
> SNIP
>