[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