Messages in this thread | | | Subject | Re: [PATCH] trace-cmd: Use lseek64 and off64_t in tracecmd_append_cpu_data(). | From | Steven Rostedt <> | Date | Mon, 13 Sep 2010 12:10:10 -0400 |
| |
Hi David,
On Fri, 2010-09-10 at 18:24 -0700, David Sharp wrote: > lseek64 returns 64-bit, but was being truncated to int. Large offsets would > cause the subsequent error checking to fail spuriously, leaving behind a bad > trace.dat and a collection of trace.dat.cpuX files.
Could you resend with your SoB.
Thanks!
-- Steve
> --- > trace-output.c | 10 +++++----- > 1 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/trace-output.c b/trace-output.c > index 89b3954..0730a1e 100644 > --- a/trace-output.c > +++ b/trace-output.c > @@ -705,9 +705,9 @@ out_free: > int tracecmd_append_cpu_data(struct tracecmd_output *handle, > int cpus, char * const *cpu_data_files) > { > - unsigned long long *offsets = NULL; > + off64_t *offsets = NULL; > unsigned long long *sizes = NULL; > - unsigned long long offset; > + off64_t offset; > unsigned long long endian8; > off64_t check_size; > char *file; > @@ -733,7 +733,7 @@ int tracecmd_append_cpu_data(struct tracecmd_output *handle, > if (!sizes) > goto out_free; > > - offset = lseek(handle->fd, 0, SEEK_CUR); > + offset = lseek64(handle->fd, 0, SEEK_CUR); > > /* hold any extra data for data */ > offset += cpus * (16); > @@ -761,8 +761,8 @@ int tracecmd_append_cpu_data(struct tracecmd_output *handle, > > for (i = 0; i < cpus; i++) { > fprintf(stderr, "offset=%llx\n", offsets[i]); > - ret = lseek64(handle->fd, offsets[i], SEEK_SET); > - if (ret < 0) { > + offset = lseek64(handle->fd, offsets[i], SEEK_SET); > + if (offset == (off64_t)-1) { > warning("could not seek to %lld\n", offsets[i]); > goto out_free; > }
| |