This series adds a new "discard-data" option to memory-backend-file. The new option will be useful if somebody is sharing RAM contents on a pre-existing file using share=on, but don't need data to be flushed to disk when QEMU exits.
Internally, it will trigger a madvise(MADV_REMOVE) call when the memory backend is removed or when QEMU exits. To make we actually trigger the new code when QEMU exits, the first patch in the series ensures we destroy all user-created objects when exiting QEMU. Changes v1 -> v2: * Original subject line of v1 was: '[PATCH 0/5] hostmem-file: Add "persistent" option' * Replaced 'persistent=no' with 'discard-data=yes', to make it clear that the flag will destroy data on the backing file. * Use qemu_madvise() instead of madvise() * New patch added to series: "osdep: define QEMU_MADV_REMOVE" * Call qemu_madvise() directly from the backend unparent() method, insteead of adding a new flag to the memory API and reusing ram_block_discard_range() * In addition to simplifying the code a lot, this fixes a bug, because v1 relied on getting the memory region reference count back to 0, which doesn't happen when QEMU is exiting because there's no machine cleanup code to ensure that. Eduardo Habkost (3): vl: Clean up user-creatable objects when exiting osdep: Define QEMU_MADV_REMOVE hostmem-file: Add "discard-data" option include/qemu/osdep.h | 7 +++++++ include/qom/object_interfaces.h | 8 ++++++++ backends/hostmem-file.c | 29 +++++++++++++++++++++++++++++ qom/object_interfaces.c | 5 +++++ vl.c | 1 + qemu-options.hx | 5 ++++- 6 files changed, 54 insertions(+), 1 deletion(-) -- 2.9.4