From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: Re: [PATCH] virtio-net: Fix save/load Date: Wed, 06 May 2009 10:01:15 -0600 Message-ID: <1241625675.26045.42.camel@lappy> References: <1232042731.20605.9.camel@bling> <4A013A75.9050405@redhat.com> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Cc: kvm-devel , Mark McLoughlin To: Avi Kivity Return-path: Received: from g1t0027.austin.hp.com ([15.216.28.34]:7189 "EHLO g1t0027.austin.hp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754230AbZEFQBQ (ORCPT ); Wed, 6 May 2009 12:01:16 -0400 In-Reply-To: <4A013A75.9050405@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On Wed, 2009-05-06 at 10:21 +0300, Avi Kivity wrote: > Alex Williamson wrote: > > We can't rely on build switches to tell us if a save image > > includes a given field. We also need to save status since > > it's visible to the guest. Draw another line in the sand > > for broken save versions. The version number should always > > be updated when new values are saved and load should make > > an attempt to set reasonable defaults for lower version save > > images. > > > > I applied the the first part of this ancient patch. Can't tell from the > thread what the consensus is for the rest. Thanks Avi, I think you got the important bits. I might recommend the following change to keep this contained to a version_id 7 load and bail if vnet header support is required, but not available. Thanks, Alex kvm: virtio-net: Cleanup load from vnet header saved image Bail if the saved image requires vnet header support. Signed-off-by: Alex Williamson --- hw/virtio-net.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/hw/virtio-net.c b/hw/virtio-net.c index 6dfe758..4beb16d 100644 --- a/hw/virtio-net.c +++ b/hw/virtio-net.c @@ -663,14 +663,15 @@ static int virtio_net_load(QEMUFile *f, void *opaque, int version_id) if (version_id >= 6) qemu_get_buffer(f, (uint8_t *)n->vlans, MAX_VLAN >> 3); -#ifdef TAP_VNET_HDR if (version_id == 7 && qemu_get_be32(f)) { +#ifdef TAP_VNET_HDR tap_using_vnet_hdr(n->vc->vlan->first_client, 1); - } #else - /* FIXME: error out if nonzero? */ - qemu_get_be32(f); + fprintf(stderr, + "virtio-net: saved image requires vnet header support\n"); + exit(1); #endif + } if (n->tx_timer_active) { qemu_mod_timer(n->tx_timer,