From: Wen Congyang <we...@cn.fujitsu.com> Currently, starting a datacopier requires a valid read and write fd, but this is a problem when purely sending data from a local buffer to a writable fd.
The prefixdata mechanism already exists and works for inserting data from a local buffer ahead of reading from the read fd. Make the lack of a read fd non-fatal. A datacopier with no read fd, but some prefixdata will write the prefixdata to the write fd and complete successfully. Signed-off-by: Wen Congyang <we...@cn.fujitsu.com> [Rewrite commit message] Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com> CC: Ian Campbell <ian.campb...@citrix.com> CC: Ian Jackson <ian.jack...@eu.citrix.com> CC: Wei Liu <wei.l...@citrix.com> --- v2: Rewrite commit message. No code change --- tools/libxl/libxl_aoutils.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tools/libxl/libxl_aoutils.c b/tools/libxl/libxl_aoutils.c index b10d2e1..3e0c0ae 100644 --- a/tools/libxl/libxl_aoutils.c +++ b/tools/libxl/libxl_aoutils.c @@ -309,9 +309,11 @@ int libxl__datacopier_start(libxl__datacopier_state *dc) libxl__datacopier_init(dc); - rc = libxl__ev_fd_register(gc, &dc->toread, datacopier_readable, - dc->readfd, POLLIN); - if (rc) goto out; + if (dc->readfd >= 0) { + rc = libxl__ev_fd_register(gc, &dc->toread, datacopier_readable, + dc->readfd, POLLIN); + if (rc) goto out; + } rc = libxl__ev_fd_register(gc, &dc->towrite, datacopier_writable, dc->writefd, POLLOUT); -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel