On Mon, 7 Sep 2015 15:39:59 +0800 Jason Wang <jasow...@redhat.com> wrote:
> On 09/02/2015 07:06 PM, Cornelia Huck wrote: > > On Wed, 2 Sep 2015 11:25:21 +0800 > > Jason Wang <jasow...@redhat.com> wrote: > >> +static int get_extra_state(QEMUFile *f, void *pv, size_t size) > >> +{ > >> + VirtIODevice *vdev = pv; > >> + BusState *qbus = qdev_get_parent_bus(DEVICE(vdev)); > >> + VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(qbus); > >> + int ret = 0; > >> + > >> + ret = k->load_extra_state(qbus->parent, f); > > Should we check for ->load_extra_state() and return failure if it does > > not exist? > > I think checking the existence of has_extra_state() in > virtio_extra_state_needed() is enough for this? Or is there anything I miss? The has_extra_state() callback is called by the sender, not by the receiver. If the other side sent the extra state but we can't handle it, I think it would be better to fail the migration than to crash. Still broken code, but probably easier to debug :)