qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH V4 07/19] hostmem-memfd: preserve for cpr


From: Steven Sistare
Subject: Re: [PATCH V4 07/19] hostmem-memfd: preserve for cpr
Date: Wed, 18 Dec 2024 14:53:03 -0500
User-agent: Mozilla Thunderbird

Hi Peter, can we upgrade your Acked-by to an RB?  You gave RB to the
similar patch "hostmem-shm: preserve for cpr"

- Steve

On 12/2/2024 8:19 AM, Steve Sistare wrote:
Preserve memory-backend-memfd memory objects during cpr-transfer.

Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
Acked-by: Peter Xu <peterx@redhat.com>
---
  backends/hostmem-memfd.c | 12 +++++++++---
  1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/backends/hostmem-memfd.c b/backends/hostmem-memfd.c
index 1bcae4b..497d63b 100644
--- a/backends/hostmem-memfd.c
+++ b/backends/hostmem-memfd.c
@@ -17,6 +17,7 @@
  #include "qemu/module.h"
  #include "qapi/error.h"
  #include "qom/object.h"
+#include "migration/cpr.h"
OBJECT_DECLARE_SIMPLE_TYPE(HostMemoryBackendMemfd, MEMORY_BACKEND_MEMFD) @@ -33,15 +34,19 @@ static bool
  memfd_backend_memory_alloc(HostMemoryBackend *backend, Error **errp)
  {
      HostMemoryBackendMemfd *m = MEMORY_BACKEND_MEMFD(backend);
-    g_autofree char *name = NULL;
+    g_autofree char *name = host_memory_backend_get_name(backend);
+    int fd = cpr_find_fd(name, 0);
      uint32_t ram_flags;
-    int fd;
if (!backend->size) {
          error_setg(errp, "can't create backend with size 0");
          return false;
      }
+ if (fd >= 0) {
+        goto have_fd;
+    }
+
      fd = qemu_memfd_create(TYPE_MEMORY_BACKEND_MEMFD, backend->size,
                             m->hugetlb, m->hugetlbsize, m->seal ?
                             F_SEAL_GROW | F_SEAL_SHRINK | F_SEAL_SEAL : 0,
@@ -49,9 +54,10 @@ memfd_backend_memory_alloc(HostMemoryBackend *backend, Error 
**errp)
      if (fd == -1) {
          return false;
      }
+    cpr_save_fd(name, 0, fd);
+have_fd:
      backend->aligned = true;
-    name = host_memory_backend_get_name(backend);
      ram_flags = backend->share ? RAM_SHARED : RAM_PRIVATE;
      ram_flags |= backend->reserve ? 0 : RAM_NORESERVE;
      ram_flags |= backend->guest_memfd ? RAM_GUEST_MEMFD : 0;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]