On Thu, Feb 26, 2026 at 02:59:51PM +0100, [email protected] wrote: > From: Marc-André Lureau <[email protected]> > > Refactor the RamDiscardManager interface into two distinct components: > - RamDiscardSource: An interface that state providers (virtio-mem, > RamBlockAttributes) implement to provide discard state information > (granularity, populated/discarded ranges, replay callbacks). > - RamDiscardManager: A concrete QOM object that wraps a source, owns > the listener list, and handles listener registration/unregistration > and notifications. > > This separation moves the listener management logic from individual > source implementations into the central RamDiscardManager, reducing > code duplication between virtio-mem and RamBlockAttributes. > > The change prepares for future work where a RamDiscardManager could > aggregate multiple sources. > > Note, the original virtio-mem code had conditions before discard: > if (vmem->size) { > rdl->notify_discard(rdl, rdl->section); > } > however, the new code calls discard unconditionally. This is considered > safe, since the populate/discard of sections are already asymmetrical > (unplug & unregister all listener section unconditionally). > > Signed-off-by: Marc-André Lureau <[email protected]>
Reviewed-by: Peter Xu <[email protected]> -- Peter Xu
