* [Qemu-devel] [PATCH v1 0/1] vmstate: fix failed iotests case 68 and 91 @ 2017-03-10 4:44 QingFeng Hao 2017-03-10 4:44 ` [Qemu-devel] [PATCH v1 1/1] " QingFeng Hao 0 siblings, 1 reply; 6+ messages in thread From: QingFeng Hao @ 2017-03-10 4:44 UTC (permalink / raw) To: qemu-block, qemu-devel Cc: borntraeger, cornelia.huck, pasic, liujbjl, kwolf, famz, mreitz, dgilbert, quintela Hi All, This patch is to fix the failed iotests case 68 and 91 and has been tested. It's based on commit dd4d2578215 "Merge remote-tracking branch 'remotes/kraxel/tags/pull-fixes-20170309-1' into staging" and according to Halil and Dave's comments. Also thanks for Fam and Kevin. QingFeng Hao (1): vmstate: fix failed iotests case 68 and 91 migration/vmstate.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -- 1.8.3.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH v1 1/1] vmstate: fix failed iotests case 68 and 91 2017-03-10 4:44 [Qemu-devel] [PATCH v1 0/1] vmstate: fix failed iotests case 68 and 91 QingFeng Hao @ 2017-03-10 4:44 ` QingFeng Hao 2017-03-14 14:13 ` Dr. David Alan Gilbert 2017-03-16 8:01 ` Juan Quintela 0 siblings, 2 replies; 6+ messages in thread From: QingFeng Hao @ 2017-03-10 4:44 UTC (permalink / raw) To: qemu-block, qemu-devel Cc: borntraeger, cornelia.huck, pasic, liujbjl, kwolf, famz, mreitz, dgilbert, quintela This problem affects s390x only if we are running without KVM. Basically, S390CPU.irqstate is unused if we do not use KVM, and thus no buffer is allocated. This causes size=0, first_elem=NULL and n_elems=1 in vmstate_load_state and vmstate_save_state. And the assert fails. With this fix we can go back to the old behavior and support VMS_VBUFFER with size 0 and nullptr. Signed-off-by: QingFeng Hao <haoqf@linux.vnet.ibm.com> Signed-off-by: Halil Pasic <pasic@linux.vnet.ibm.com> --- migration/vmstate.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/migration/vmstate.c b/migration/vmstate.c index 78b3cd4..7b4a607 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -109,7 +109,7 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, vmstate_handle_alloc(first_elem, field, opaque); if (field->flags & VMS_POINTER) { first_elem = *(void **)first_elem; - assert(first_elem || !n_elems); + assert(first_elem || !n_elems || !size); } for (i = 0; i < n_elems; i++) { void *curr_elem = first_elem + size * i; @@ -117,7 +117,7 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, if (field->flags & VMS_ARRAY_OF_POINTER) { curr_elem = *(void **)curr_elem; } - if (!curr_elem) { + if (!curr_elem && size) { /* if null pointer check placeholder and do not follow */ assert(field->flags & VMS_ARRAY_OF_POINTER); ret = vmstate_info_nullptr.get(f, curr_elem, size, NULL); @@ -325,7 +325,7 @@ void vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, trace_vmstate_save_state_loop(vmsd->name, field->name, n_elems); if (field->flags & VMS_POINTER) { first_elem = *(void **)first_elem; - assert(first_elem || !n_elems); + assert(first_elem || !n_elems || !size); } for (i = 0; i < n_elems; i++) { void *curr_elem = first_elem + size * i; @@ -336,7 +336,7 @@ void vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, assert(curr_elem); curr_elem = *(void **)curr_elem; } - if (!curr_elem) { + if (!curr_elem && size) { /* if null pointer write placeholder and do not follow */ assert(field->flags & VMS_ARRAY_OF_POINTER); vmstate_info_nullptr.put(f, curr_elem, size, NULL, NULL); -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v1 1/1] vmstate: fix failed iotests case 68 and 91 2017-03-10 4:44 ` [Qemu-devel] [PATCH v1 1/1] " QingFeng Hao @ 2017-03-14 14:13 ` Dr. David Alan Gilbert 2017-03-15 1:21 ` QingFeng Hao 2017-03-16 8:01 ` Juan Quintela 1 sibling, 1 reply; 6+ messages in thread From: Dr. David Alan Gilbert @ 2017-03-14 14:13 UTC (permalink / raw) To: QingFeng Hao Cc: qemu-block, qemu-devel, borntraeger, cornelia.huck, pasic, liujbjl, kwolf, famz, mreitz, quintela * QingFeng Hao (haoqf@linux.vnet.ibm.com) wrote: > This problem affects s390x only if we are running without KVM. > Basically, S390CPU.irqstate is unused if we do not use KVM, > and thus no buffer is allocated. > This causes size=0, first_elem=NULL and n_elems=1 in > vmstate_load_state and vmstate_save_state. And the assert fails. > With this fix we can go back to the old behavior and support > VMS_VBUFFER with size 0 and nullptr. > > Signed-off-by: QingFeng Hao <haoqf@linux.vnet.ibm.com> > Signed-off-by: Halil Pasic <pasic@linux.vnet.ibm.com> Thanks, and fixes problem with vmxnet3 migration. Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Dave > --- > migration/vmstate.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/migration/vmstate.c b/migration/vmstate.c > index 78b3cd4..7b4a607 100644 > --- a/migration/vmstate.c > +++ b/migration/vmstate.c > @@ -109,7 +109,7 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, > vmstate_handle_alloc(first_elem, field, opaque); > if (field->flags & VMS_POINTER) { > first_elem = *(void **)first_elem; > - assert(first_elem || !n_elems); > + assert(first_elem || !n_elems || !size); > } > for (i = 0; i < n_elems; i++) { > void *curr_elem = first_elem + size * i; > @@ -117,7 +117,7 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, > if (field->flags & VMS_ARRAY_OF_POINTER) { > curr_elem = *(void **)curr_elem; > } > - if (!curr_elem) { > + if (!curr_elem && size) { > /* if null pointer check placeholder and do not follow */ > assert(field->flags & VMS_ARRAY_OF_POINTER); > ret = vmstate_info_nullptr.get(f, curr_elem, size, NULL); > @@ -325,7 +325,7 @@ void vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, > trace_vmstate_save_state_loop(vmsd->name, field->name, n_elems); > if (field->flags & VMS_POINTER) { > first_elem = *(void **)first_elem; > - assert(first_elem || !n_elems); > + assert(first_elem || !n_elems || !size); > } > for (i = 0; i < n_elems; i++) { > void *curr_elem = first_elem + size * i; > @@ -336,7 +336,7 @@ void vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, > assert(curr_elem); > curr_elem = *(void **)curr_elem; > } > - if (!curr_elem) { > + if (!curr_elem && size) { > /* if null pointer write placeholder and do not follow */ > assert(field->flags & VMS_ARRAY_OF_POINTER); > vmstate_info_nullptr.put(f, curr_elem, size, NULL, NULL); > -- > 1.8.3.1 > > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v1 1/1] vmstate: fix failed iotests case 68 and 91 2017-03-14 14:13 ` Dr. David Alan Gilbert @ 2017-03-15 1:21 ` QingFeng Hao 0 siblings, 0 replies; 6+ messages in thread From: QingFeng Hao @ 2017-03-15 1:21 UTC (permalink / raw) To: Dr. David Alan Gilbert Cc: qemu-block, qemu-devel, borntraeger, cornelia.huck, pasic, liujbjl, kwolf, famz, mreitz, quintela 在 2017/3/14 22:13, Dr. David Alan Gilbert 写道: > * QingFeng Hao (haoqf@linux.vnet.ibm.com) wrote: >> This problem affects s390x only if we are running without KVM. >> Basically, S390CPU.irqstate is unused if we do not use KVM, >> and thus no buffer is allocated. >> This causes size=0, first_elem=NULL and n_elems=1 in >> vmstate_load_state and vmstate_save_state. And the assert fails. >> With this fix we can go back to the old behavior and support >> VMS_VBUFFER with size 0 and nullptr. >> >> Signed-off-by: QingFeng Hao <haoqf@linux.vnet.ibm.com> >> Signed-off-by: Halil Pasic <pasic@linux.vnet.ibm.com> > Thanks, and fixes problem with vmxnet3 migration. > > Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Thank you, Dave! > > Dave > >> --- >> migration/vmstate.c | 8 ++++---- >> 1 file changed, 4 insertions(+), 4 deletions(-) >> >> diff --git a/migration/vmstate.c b/migration/vmstate.c >> index 78b3cd4..7b4a607 100644 >> --- a/migration/vmstate.c >> +++ b/migration/vmstate.c >> @@ -109,7 +109,7 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, >> vmstate_handle_alloc(first_elem, field, opaque); >> if (field->flags & VMS_POINTER) { >> first_elem = *(void **)first_elem; >> - assert(first_elem || !n_elems); >> + assert(first_elem || !n_elems || !size); >> } >> for (i = 0; i < n_elems; i++) { >> void *curr_elem = first_elem + size * i; >> @@ -117,7 +117,7 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, >> if (field->flags & VMS_ARRAY_OF_POINTER) { >> curr_elem = *(void **)curr_elem; >> } >> - if (!curr_elem) { >> + if (!curr_elem && size) { >> /* if null pointer check placeholder and do not follow */ >> assert(field->flags & VMS_ARRAY_OF_POINTER); >> ret = vmstate_info_nullptr.get(f, curr_elem, size, NULL); >> @@ -325,7 +325,7 @@ void vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, >> trace_vmstate_save_state_loop(vmsd->name, field->name, n_elems); >> if (field->flags & VMS_POINTER) { >> first_elem = *(void **)first_elem; >> - assert(first_elem || !n_elems); >> + assert(first_elem || !n_elems || !size); >> } >> for (i = 0; i < n_elems; i++) { >> void *curr_elem = first_elem + size * i; >> @@ -336,7 +336,7 @@ void vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, >> assert(curr_elem); >> curr_elem = *(void **)curr_elem; >> } >> - if (!curr_elem) { >> + if (!curr_elem && size) { >> /* if null pointer write placeholder and do not follow */ >> assert(field->flags & VMS_ARRAY_OF_POINTER); >> vmstate_info_nullptr.put(f, curr_elem, size, NULL, NULL); >> -- >> 1.8.3.1 >> >> > -- > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK > -- Regards QingFeng Hao ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v1 1/1] vmstate: fix failed iotests case 68 and 91 2017-03-10 4:44 ` [Qemu-devel] [PATCH v1 1/1] " QingFeng Hao 2017-03-14 14:13 ` Dr. David Alan Gilbert @ 2017-03-16 8:01 ` Juan Quintela 2017-03-17 2:32 ` QingFeng Hao 1 sibling, 1 reply; 6+ messages in thread From: Juan Quintela @ 2017-03-16 8:01 UTC (permalink / raw) To: QingFeng Hao Cc: qemu-block, qemu-devel, borntraeger, cornelia.huck, pasic, liujbjl, kwolf, famz, mreitz, dgilbert QingFeng Hao <haoqf@linux.vnet.ibm.com> wrote: > This problem affects s390x only if we are running without KVM. > Basically, S390CPU.irqstate is unused if we do not use KVM, > and thus no buffer is allocated. > This causes size=0, first_elem=NULL and n_elems=1 in > vmstate_load_state and vmstate_save_state. And the assert fails. > With this fix we can go back to the old behavior and support > VMS_VBUFFER with size 0 and nullptr. > > Signed-off-by: QingFeng Hao <haoqf@linux.vnet.ibm.com> > Signed-off-by: Halil Pasic <pasic@linux.vnet.ibm.com> queued ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v1 1/1] vmstate: fix failed iotests case 68 and 91 2017-03-16 8:01 ` Juan Quintela @ 2017-03-17 2:32 ` QingFeng Hao 0 siblings, 0 replies; 6+ messages in thread From: QingFeng Hao @ 2017-03-17 2:32 UTC (permalink / raw) To: quintela Cc: qemu-block, qemu-devel, borntraeger, cornelia.huck, pasic, liujbjl, kwolf, famz, mreitz, dgilbert 在 2017/3/16 16:01, Juan Quintela 写道: > QingFeng Hao <haoqf@linux.vnet.ibm.com> wrote: >> This problem affects s390x only if we are running without KVM. >> Basically, S390CPU.irqstate is unused if we do not use KVM, >> and thus no buffer is allocated. >> This causes size=0, first_elem=NULL and n_elems=1 in >> vmstate_load_state and vmstate_save_state. And the assert fails. >> With this fix we can go back to the old behavior and support >> VMS_VBUFFER with size 0 and nullptr. >> >> Signed-off-by: QingFeng Hao <haoqf@linux.vnet.ibm.com> >> Signed-off-by: Halil Pasic <pasic@linux.vnet.ibm.com> > queued Thanks! -- Regards QingFeng Hao ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-03-17 2:32 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-03-10 4:44 [Qemu-devel] [PATCH v1 0/1] vmstate: fix failed iotests case 68 and 91 QingFeng Hao 2017-03-10 4:44 ` [Qemu-devel] [PATCH v1 1/1] " QingFeng Hao 2017-03-14 14:13 ` Dr. David Alan Gilbert 2017-03-15 1:21 ` QingFeng Hao 2017-03-16 8:01 ` Juan Quintela 2017-03-17 2:32 ` QingFeng Hao
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).