On Sat, Feb 28, 2026 at 02:56:30AM +0300, Vladimir Sementsov-Ogievskiy wrote:
> On 28.02.26 01:41, Fabiano Rosas wrote:
> > > diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
> > > index 3695afd483..15578b3e28 100644
> > > --- a/include/migration/vmstate.h
> > > +++ b/include/migration/vmstate.h
> > > @@ -223,7 +223,15 @@ struct VMStateDescription {
> > > bool (*post_load_errp)(void *opaque, int version_id, Error **errp);
> > > int (*pre_save)(void *opaque);
> > > bool (*pre_save_errp)(void *opaque, Error **errp);
> > > - int (*post_save)(void *opaque);
> > > +
> > > + /*
> > > + * post_save() rarely used to free some temporary resources.
> > > + * It's is called if .pre_save[_errp]() call was successful
> > > + * (or .pre_save[_errp] handler absent), regardless success
> > > + * or failure during fields and subsections save. If
> > > + * .pre_save[_errp]() fails, .post_save() is not called.
> > > + */
> > I would not mention usage directly and maybe also simplify the language
> > a bit. If there's doubt on the exact flow, people can read the code:
> >
> > /*
> > * Unless .pre_save() fails, post_save() is called after saving
> > * fields and subsections. It should not fail because at this point
> > * the state has potentially already been transferred.
> > */
>
>
> Agree, sounds good.
With the update, feel free to take:
Reviewed-by: Peter Xu <[email protected]>
--
Peter Xu