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;
>               }

Reply via email to