Messages in this thread | | | Date | Mon, 8 Oct 2018 17:11:08 +0200 | From | Jiri Olsa <> | Subject | Re: [PATCH v11 2/3]: perf record: enable asynchronous trace writing |
| |
On Mon, Oct 08, 2018 at 05:42:18PM +0300, Alexey Budankov wrote: > Hi, > On 08.10.2018 15:53, Jiri Olsa wrote: > > On Mon, Oct 08, 2018 at 03:24:31PM +0300, Alexey Budankov wrote: > >> Hi, > >> > >> On 08.10.2018 13:52, Jiri Olsa wrote: > >>> On Mon, Oct 08, 2018 at 09:17:11AM +0300, Alexey Budankov wrote: > >> <SNIP> > >>>> +#ifdef HAVE_AIO_SUPPORT > >>>> + off = lseek(trace_fd, 0, SEEK_CUR); > >>>> +#endif > >>> > >>> I'm still little puzzled why we need to do this, > >>> when the aio write takes the offset value, but > >> > >> pwrite() syscall [1] which is the base for aio_write() doesn't > >> advance file pos value so it requires to be calculated and > >> updated by callers of aio_write() API. > > > > ok, so aio_write does not need the offset to be updated, > > who needs it then? > > aio_write() needs this offset as an input parameter. > aio_write() gets offset as a part of cblock object.
yes, it's an 'arg' to aio_write syscall
> Adjacent aio_write() records should not overlap in the trace file so > off value is incremented by size in every loop iteration after > successful aio_write() call.
but does the aio_write need the lseek 'set' call? if not, we could keep the 'offset' value within perf (like in the struct perf_data_file or struct record) without any need to call lseek
jirka
| |