Re: [PATCH v3 4/6] Fix read / write data offsets in read / write loops

From: Michael Sartain
Date: Wed Jun 21 2017 - 13:36:42 EST


On Wed, Jun 21, 2017 at 09:29:14AM -0400, Steven Rostedt wrote:
> On Wed, 14 Jun 2017 18:27:59 -0600
> Michael Sartain <mikesart@xxxxxxxxxxxx> wrote:
>
> > The tot variable in __do_write and do_read is incremented with the amount read
> > / written, but subsequent times through the loop the calls continue to use the
> > original data pointer.
> >
> > Signed-off-by: Michael Sartain <mikesart@xxxxxxxxxxxx>
> > ---
> > trace-cmd-local.h | 2 +-
> > trace-input.c | 2 +-
> > 2 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/trace-cmd-local.h b/trace-cmd-local.h
> > index 8595a8a..b8ab35b 100644
> > --- a/trace-cmd-local.h
> > +++ b/trace-cmd-local.h
> > @@ -31,7 +31,7 @@ static ssize_t __do_write(int fd, const void *data, size_t size)
> > ssize_t w;
> >
> > do {
> > - w = TEMP_FAILURE_RETRY(write(fd, data, size - tot));
> > + w = TEMP_FAILURE_RETRY(write(fd, data + tot, size - tot));
>
> Good catch. I'm going to modify this to remove the TEMP_FAILURE_RETRY()
> though. I'll hopefully get this pushed out later today, and we could
> add the write_intr() and friends later.

I've got a couple other patches ready to submit. I'll wait for your push,
rebase those, and add a TEMP_FAILURE_RETRY -> *_intr() patch with those.

Thanks much Steve.
-Mike