From patchwork Mon Mar 20 18:03:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vitaly Kuznetsov X-Patchwork-Id: 9634875 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 81CFD60132 for ; Mon, 20 Mar 2017 18:05:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7984B26CF9 for ; Mon, 20 Mar 2017 18:05:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6E72D26E73; Mon, 20 Mar 2017 18:05:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 1F25026CF9 for ; Mon, 20 Mar 2017 18:05:28 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cq1eL-0004r9-5U; Mon, 20 Mar 2017 18:03:21 +0000 Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cq1eK-0004pv-C3 for xen-devel@lists.xen.org; Mon, 20 Mar 2017 18:03:20 +0000 Received: from [85.158.139.211] by server-3.bemta-5.messagelabs.com id 82/A5-01936-76910D85; Mon, 20 Mar 2017 18:03:19 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprDIsWRWlGSWpSXmKPExsVysWW7jG6a5IU Ig5PaFks+LmZxYPQ4uvs3UwBjFGtmXlJ+RQJrRsvGHtaCM2IVH/5OY2xgXCzUxcjJISQwh0ni 2nJVEJtFwEFi/ZFWdhCbUaBM4t+aHsYuRg4gO1di3159iBJ7iWWnTrN0MXIBta5mlFj/qocZJ MEmoCPx/ekpMFtEQFri2ufLjCA2s4C3xIcj/9hB5ggLOElsXcUMMUdV4sPNFrASXgFziVl7br KA2JwCFhInnjaxQZxmLjF5wQqwegkBbYkL7Y/A9koI9DFKNJ95yjSBUWABI8MqRo3i1KKy1CJ dIzO9pKLM9IyS3MTMHF1DA1O93NTi4sT01JzEpGK95PzcTYzAkKpnYGDcwXh7st8hRkkOJiVR XhXBExFCfEn5KZUZicUZ8UWlOanFhxhlODiUJHirtgHlBItS01Mr0jJzgMENk5bg4FES4f2wF SjNW1yQmFucmQ6ROsWoyzFn9u43TEIsefl5qVLivO4gMwRAijJK8+BGwCLtEqOslDAvIwMDgx BPQWpRbmYJqvwrRnEORiVh3gqQKTyZeSVwm14BHcEEdETizyMgR5QkIqSkGhjllzcscWl/8Kd /e+qNlfxLRdU9Ap3b+r1cXvqZbKv1OGsTq2Vy58WqQlVrl+gCoy/ya43ZWgs89zrPVqq5sLxq zSMj769Hm7nczye7pS89LSBx/FxsVtJvpTqL5lXXwzlnVmmm8ZR5rjg9Ue3+Hf1XW42NpF6v1 diyPVN08vGqxYdOqUndKlViKc5INNRiLipOBABJaNW5rwIAAA== X-Env-Sender: vkuznets@redhat.com X-Msg-Ref: server-12.tower-206.messagelabs.com!1490032996!54164729!1 X-Originating-IP: [209.132.183.28] X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: VHJ1c3RlZCBJUDogMjA5LjEzMi4xODMuMjggPT4gNTQwNjQ=\n X-StarScan-Received: X-StarScan-Version: 9.2.3; banners=-,-,- X-VirusChecked: Checked Received: (qmail 23501 invoked from network); 20 Mar 2017 18:03:17 -0000 Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by server-12.tower-206.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 20 Mar 2017 18:03:17 -0000 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id EF694437F4C; Mon, 20 Mar 2017 18:03:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com EF694437F4C DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com EF694437F4C Received: from vitty.brq.redhat.com (vitty.brq.redhat.com [10.34.26.3]) by smtp.corp.redhat.com (Postfix) with ESMTP id C9E9578C2D; Mon, 20 Mar 2017 18:03:15 +0000 (UTC) From: Vitaly Kuznetsov To: xen-devel@lists.xen.org Date: Mon, 20 Mar 2017 19:03:11 +0100 Message-Id: <20170320180311.5091-3-vkuznets@redhat.com> In-Reply-To: <20170320180311.5091-1-vkuznets@redhat.com> References: <20170320180311.5091-1-vkuznets@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 20 Mar 2017 18:03:17 +0000 (UTC) Cc: Wei Liu , Ian Jackson Subject: [Xen-devel] [PATCH 2/2] libxl: preserve console tty across soft reset X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP On soft reset we remove the domain from xenstore and introduce it back to have everything reconnected. Console, however, stays attached (as xenconsoled checks if the domain is dying and our domain is not) but we lose the information about tty: before soft reset: console = "" ... type = "xenconsoled" output = "pty" tty = "/dev/pts/1" ... after: console = "" ... type = "xenconsoled" output = "pty" tty = "" ... The issue applies to both HVM and PVH but for HVM guests serial console through QEMU is usually in use and for PVH we don't have it. Signed-off-by: Vitaly Kuznetsov --- tools/libxl/libxl_console.c | 5 ++++- tools/libxl/libxl_create.c | 8 +++++++- tools/libxl/libxl_internal.h | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/tools/libxl/libxl_console.c b/tools/libxl/libxl_console.c index cbc70b7..446e766 100644 --- a/tools/libxl/libxl_console.c +++ b/tools/libxl/libxl_console.c @@ -316,7 +316,10 @@ int libxl__device_console_add(libxl__gc *gc, uint32_t domid, flexarray_append(ro_front, "output"); flexarray_append(ro_front, console->output); flexarray_append(ro_front, "tty"); - flexarray_append(ro_front, ""); + if (state && state->console_tty) + flexarray_append(ro_front, state->console_tty); + else + flexarray_append(ro_front, ""); if (state) { flexarray_append(ro_front, "port"); diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 95fd96b..ad8a424 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -1696,7 +1696,7 @@ static int do_domain_soft_reset(libxl_ctx *ctx, libxl__domain_create_state *dcs; libxl__domain_build_state *state; libxl__domain_save_state *dss; - char *dom_path, *xs_store_mfn, *xs_console_mfn; + char *dom_path, *xs_store_mfn, *xs_console_mfn, *xs_console_tty; uint32_t domid_out; int rc; @@ -1737,6 +1737,12 @@ static int do_domain_soft_reset(libxl_ctx *ctx, state->console_mfn = xs_console_mfn ? atol(xs_console_mfn): 0; free(xs_console_mfn); + xs_console_tty = xs_read(ctx->xsh, XBT_NULL, + GCSPRINTF("%s/console/tty", dom_path), + NULL); + state->console_tty = libxl__strdup(gc, xs_console_tty); + free(xs_console_tty); + dss->ao = ao; dss->domid = dss->dsps.domid = domid_soft_reset; dss->dsps.dm_savefile = GCSPRINTF(LIBXL_DEVICE_MODEL_SAVE_FILE".%d", diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 7722665..88fca8e 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -1123,6 +1123,7 @@ typedef struct { uint32_t console_port; uint32_t console_domid; unsigned long console_mfn; + char *console_tty; char *saved_state;