[libvirt] [PATCH v3] tools: console: Relax stream EOF handling
Daniel Henrique Barboza
danielhb413 at gmail.com
Wed Aug 21 18:11:16 UTC 2019
On 8/21/19 10:33 AM, Roman Bolshakov wrote:
> Regular VM shutdown triggers the error for existing session of virsh
> console and it returns with non-zero exit code:
> error: internal error: console stream EOF
>
> The message and status code are misleading because there's no real
> error. virStreamRecv returns 0 correctly when EOF is reached.
>
> Existing implementations of esx, fd, and remote streams behave the same
> for virStreamFinish and virStreamAbort: they close the stream. So, we
> can continue to use virStreamAbort to handle EOF and errors from
> virStreamRecv but additonally we can report error if virStreamAbort
> fails.
>
> Fixes: 29f2b5248c6 ("tools: console: pass stream/fd errors to user")
> Signed-off-by: Roman Bolshakov <r.bolshakov at yadro.com>
> ---
Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
Tested-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> tools/virsh-console.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/tools/virsh-console.c b/tools/virsh-console.c
> index e16f841e57..a235a9a283 100644
> --- a/tools/virsh-console.c
> +++ b/tools/virsh-console.c
> @@ -106,7 +106,9 @@ virConsoleShutdown(virConsolePtr con)
>
> if (con->st) {
> virStreamEventRemoveCallback(con->st);
> - virStreamAbort(con->st);
> + if (virStreamAbort(con->st) < 0)
> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> + _("cannot terminate console stream"));
> virStreamFree(con->st);
> con->st = NULL;
> }
> @@ -172,10 +174,6 @@ virConsoleEventOnStream(virStreamPtr st,
> if (got == -2)
> goto cleanup; /* blocking */
> if (got <= 0) {
> - if (got == 0)
> - virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> - _("console stream EOF"));
> -
> virConsoleShutdown(con);
> goto cleanup;
> }
More information about the libvir-list
mailing list