
Daniel P. Berrange wrote:
On Mon, Nov 03, 2008 at 02:54:23PM -0500, Cole Robinson wrote:
Daniel P. Berrange wrote:
On Thu, Oct 30, 2008 at 02:06:35PM -0400, Cole Robinson wrote:
The attached patch is my second cut at reading stdout and stderr of the command virRun kicks off. There is no hard limit to the amount of data we read now, and we use a poll loop to avoid any possible full buffer issues.
If stdout or stderr had any content, we DEBUG it, and if the command appears to fail we return stderr in the error message. So now, trying to stop a logical pool with active volumes will return:
$ sudo virsh pool-destroy vgdata libvir: error : internal error '/sbin/vgchange -an vgdata' exited with non-zero status 5 and signal 0: Can't deactivate volume group "vgdata" with 2 open logical volume(s) error: Failed to destroy pool vgdata
<snip>
I think it'd be nice to move the I/O processing loop out of the virRun() function and into a separate helper functiion along the lines of
virPipeReadUntilEOF(int outfd, int errfd, char **outbuf, char **errbuf)
Daniel
Okay, updated patch attached. Also addresses the point Jim raised about poll.h
ACK, this version looks good to me.
Daniel
Thanks, I've committed the series. - Cole