libxc: Report a better error on state file EOF. If a EOF is detected in state file 4 error are reported - 0-length - read_exact_timed failed - Error when reading batch size (0 = Success) - Error when reading batch (0 = Success) With this patch just one error is reported - Error when reading batch size (32 = Broken pipe) Signed-off-by: Frediano Ziglio # HG changeset patch # Parent 4bd752a4cdf323c41c50f8cd6286f566d67adeae diff -r 4bd752a4cdf3 -r beb5ec839f95 tools/libxc/xc_domain_restore.c --- a/tools/libxc/xc_domain_restore.c Fri Mar 23 20:51:48 2012 +0000 +++ b/tools/libxc/xc_domain_restore.c Tue Mar 27 15:13:10 2012 +0100 @@ -86,8 +86,8 @@ static ssize_t rdexact(xc_interface *xch if ( (len == -1) && ((errno == EINTR) || (errno == EAGAIN)) ) continue; if ( len == 0 ) { - ERROR("0-length read"); - errno = 0; + errno = EPIPE; + return -1; } if ( len <= 0 ) { ERROR("read_exact_timed failed (read rc: %d, errno: %d)", len, errno); @@ -1479,7 +1479,7 @@ int xc_domain_restore(xc_interface *xch, pagebuf.nr_physpages = pagebuf.nr_pages = 0; pagebuf.compbuf_pos = pagebuf.compbuf_size = 0; if ( pagebuf_get_one(xch, ctx, &pagebuf, io_fd, dom) < 0 ) { - PERROR("Error when reading batch"); + /* pagebuf_get_one already returned a proper error */ goto out; } }