diff options
author | Steve Sistare <steven.sistare@oracle.com> | 2025-01-15 11:00:36 -0800 |
---|---|---|
committer | Fabiano Rosas <farosas@suse.de> | 2025-01-29 11:43:04 -0300 |
commit | 2ef121688f407ff0fa513d317d4841fb180d6942 (patch) | |
tree | 14eec747a04fecee7ada222062275c5feba0ddd5 /backends | |
parent | 28eaa5957d3e4123e34a913991fea1a5ece41f32 (diff) | |
download | qemu-2ef121688f407ff0fa513d317d4841fb180d6942.zip qemu-2ef121688f407ff0fa513d317d4841fb180d6942.tar.gz qemu-2ef121688f407ff0fa513d317d4841fb180d6942.tar.bz2 |
hostmem-shm: preserve for cpr
Preserve memory-backend-shm memory objects during cpr-transfer.
Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Link: https://lore.kernel.org/r/1736967650-129648-11-git-send-email-steven.sistare@oracle.com
Signed-off-by: Fabiano Rosas <farosas@suse.de>
Diffstat (limited to 'backends')
-rw-r--r-- | backends/hostmem-shm.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/backends/hostmem-shm.c b/backends/hostmem-shm.c index fabee41..f67ad27 100644 --- a/backends/hostmem-shm.c +++ b/backends/hostmem-shm.c @@ -13,6 +13,7 @@ #include "qemu/osdep.h" #include "system/hostmem.h" #include "qapi/error.h" +#include "migration/cpr.h" #define TYPE_MEMORY_BACKEND_SHM "memory-backend-shm" @@ -25,9 +26,9 @@ struct HostMemoryBackendShm { static bool shm_backend_memory_alloc(HostMemoryBackend *backend, Error **errp) { - g_autofree char *backend_name = NULL; + g_autofree char *backend_name = host_memory_backend_get_name(backend); uint32_t ram_flags; - int fd; + int fd = cpr_find_fd(backend_name, 0); if (!backend->size) { error_setg(errp, "can't create shm backend with size 0"); @@ -39,13 +40,18 @@ shm_backend_memory_alloc(HostMemoryBackend *backend, Error **errp) return false; } + if (fd >= 0) { + goto have_fd; + } + fd = qemu_shm_alloc(backend->size, errp); if (fd < 0) { return false; } + cpr_save_fd(backend_name, 0, fd); +have_fd: /* Let's do the same as memory-backend-ram,share=on would do. */ - backend_name = host_memory_backend_get_name(backend); ram_flags = RAM_SHARED; ram_flags |= backend->reserve ? 0 : RAM_NORESERVE; |