On Tue, 22 Mar 2016 09:14:33 -0400 Peter Xu <pet...@redhat.com> wrote:
> Currently we have two ways to copy data, one is splice, one is read + > write. For both, dump more information when we got errors during the > copy. Also, when we update_fd(), we should make sure all bytes written, > and update written bytes only. > > These information might be important to better diagnose when the copy > got wrong, like no space error, or connection error when copying data to > remote sockets. In the past, we just got silence errors without notice. > > Signed-off-by: Peter Xu <pet...@redhat.com> > --- > trace-recorder.c | 34 ++++++++++++++++++++++++---------- > 1 file changed, 24 insertions(+), 10 deletions(-) > > diff --git a/trace-recorder.c b/trace-recorder.c > index 49b04ea..7d6feb0 100644 > --- a/trace-recorder.c > +++ b/trace-recorder.c > @@ -334,13 +334,14 @@ static inline void update_fd(struct tracecmd_recorder > *recorder, int size) > */ > static long splice_data(struct tracecmd_recorder *recorder) > { > - long ret; > + long ret, written; > > ret = splice(recorder->trace_fd, NULL, recorder->brass[1], NULL, > recorder->page_size, 1 /* SPLICE_F_MOVE */); > if (ret < 0) { > if (errno != EAGAIN && errno != EINTR) { > - warning("recorder error in splice input"); > + warning("recorder error in splice input: %s", > + strerror(errno)); I'm wondering if we should add a "pwarning()" helper function that will do the stderror(error) for us. -- Steve > return -1; > }