All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] backends/hostmem: Factor out "property still settable" check
@ 2026-11-12 11:51 Markus Armbruster
  2026-11-12 12:06 ` Daniel P. Berrangé
  0 siblings, 1 reply; 2+ messages in thread
From: Markus Armbruster @ 2026-11-12 11:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: berrange, david, imammedo

We check whether a property can still be set like this:

    if (host_memory_backend_mr_inited(backend)) {
        error_setg(errp, ...);
        return;
    }

The actual error messages vary a bit.  Most are like

    cannot change property 'PROP-NAME' of TYPE-NAME

but we also have

    cannot change property value

Factor out into host_memory_backend_settable() so we can instead use:

    if (!host_memory_backend_settable(backend, name, errp)) {
        return;
    }

The error message is now always

    cannot change property 'PROP-NAME' of 'TYPE-NAME'

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 include/system/hostmem.h |  2 ++
 backends/hostmem-file.c  | 24 ++++++------------------
 backends/hostmem-memfd.c |  3 +--
 backends/hostmem.c       | 21 ++++++++++++++-------
 4 files changed, 23 insertions(+), 27 deletions(-)

diff --git a/include/system/hostmem.h b/include/system/hostmem.h
index dcbf81aeaea..47ccc732bcb 100644
--- a/include/system/hostmem.h
+++ b/include/system/hostmem.h
@@ -86,6 +86,8 @@ struct HostMemoryBackend {
 };
 
 bool host_memory_backend_mr_inited(HostMemoryBackend *backend);
+bool host_memory_backend_settable(HostMemoryBackend *backend,
+                                  const char *prop_name, Error **errp);
 MemoryRegion *host_memory_backend_get_memory(HostMemoryBackend *backend);
 
 void host_memory_backend_set_mapped(HostMemoryBackend *backend, bool mapped);
diff --git a/backends/hostmem-file.c b/backends/hostmem-file.c
index 6ad9cad0320..b5485f12bea 100644
--- a/backends/hostmem-file.c
+++ b/backends/hostmem-file.c
@@ -107,9 +107,7 @@ static void set_mem_path(Object *o, const char *str, Error **errp)
     HostMemoryBackend *backend = MEMORY_BACKEND(o);
     HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
 
-    if (host_memory_backend_mr_inited(backend)) {
-        error_setg(errp, "cannot change property 'mem-path' of %s",
-                   object_get_typename(o));
+    if (!host_memory_backend_settable(backend, "mem-path", errp)) {
         return;
     }
     g_free(fb->mem_path);
@@ -145,9 +143,7 @@ static void file_memory_backend_set_align(Object *o, Visitor *v,
     HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
     uint64_t val;
 
-    if (host_memory_backend_mr_inited(backend)) {
-        error_setg(errp, "cannot change property '%s' of %s", name,
-                   object_get_typename(o));
+    if (!host_memory_backend_settable(backend, name, errp)) {
         return;
     }
 
@@ -175,9 +171,7 @@ static void file_memory_backend_set_offset(Object *o, Visitor *v,
     HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
     uint64_t val;
 
-    if (host_memory_backend_mr_inited(backend)) {
-        error_setg(errp, "cannot change property '%s' of %s", name,
-                   object_get_typename(o));
+    if (!host_memory_backend_settable(backend, name, errp)) {
         return;
     }
 
@@ -198,9 +192,7 @@ static void file_memory_backend_set_pmem(Object *o, bool value, Error **errp)
     HostMemoryBackend *backend = MEMORY_BACKEND(o);
     HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
 
-    if (host_memory_backend_mr_inited(backend)) {
-        error_setg(errp, "cannot change property 'pmem' of %s.",
-                   object_get_typename(o));
+    if (!host_memory_backend_settable(backend, "pmem", errp)) {
         return;
     }
 
@@ -221,9 +213,7 @@ static void file_memory_backend_set_readonly(Object *obj, bool value,
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
     HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(obj);
 
-    if (host_memory_backend_mr_inited(backend)) {
-        error_setg(errp, "cannot change property 'readonly' of %s.",
-                   object_get_typename(obj));
+    if (!host_memory_backend_settable(backend, "readonly", errp)) {
         return;
     }
 
@@ -241,9 +231,7 @@ static void file_memory_backend_set_rom(Object *obj, int value, Error **errp)
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
     HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(obj);
 
-    if (host_memory_backend_mr_inited(backend)) {
-        error_setg(errp, "cannot change property 'rom' of %s.",
-                   object_get_typename(obj));
+    if (!host_memory_backend_settable(backend, "rom", errp)) {
         return;
     }
 
diff --git a/backends/hostmem-memfd.c b/backends/hostmem-memfd.c
index 46489212a23..e56f26cd24c 100644
--- a/backends/hostmem-memfd.c
+++ b/backends/hostmem-memfd.c
@@ -134,8 +134,7 @@ memfd_backend_set_hugetlbsize(Object *obj, Visitor *v, const char *name,
     HostMemoryBackendMemfd *m = MEMORY_BACKEND_MEMFD(obj);
     uint64_t value;
 
-    if (host_memory_backend_mr_inited(MEMORY_BACKEND(obj))) {
-        error_setg(errp, "cannot change property value");
+    if (!host_memory_backend_settable(MEMORY_BACKEND(m), name, errp)) {
         return;
     }
 
diff --git a/backends/hostmem.c b/backends/hostmem.c
index 173d042be35..f8fadeb28c1 100644
--- a/backends/hostmem.c
+++ b/backends/hostmem.c
@@ -66,9 +66,7 @@ host_memory_backend_set_size(Object *obj, Visitor *v, const char *name,
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
     uint64_t value;
 
-    if (host_memory_backend_mr_inited(backend)) {
-        error_setg(errp, "cannot change property %s of %s ", name,
-                   object_get_typename(obj));
+    if (!host_memory_backend_settable(backend, name, errp)) {
         return;
     }
 
@@ -310,6 +308,17 @@ bool host_memory_backend_mr_inited(HostMemoryBackend *backend)
     return memory_region_size(&backend->mr) != 0;
 }
 
+bool host_memory_backend_settable(HostMemoryBackend *backend,
+                                  const char *prop_name, Error **errp)
+{
+    if (host_memory_backend_mr_inited(backend)) {
+        error_setg(errp, "cannot change property '%s' of '%s'",
+                   prop_name, object_get_typename(OBJECT(backend)));
+        return false;
+    }
+    return true;
+}
+
 MemoryRegion *host_memory_backend_get_memory(HostMemoryBackend *backend)
 {
     return host_memory_backend_mr_inited(backend) ? &backend->mr : NULL;
@@ -458,8 +467,7 @@ static void host_memory_backend_set_share(Object *o, bool value, Error **errp)
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(o);
 
-    if (host_memory_backend_mr_inited(backend)) {
-        error_setg(errp, "cannot change property value");
+    if (!host_memory_backend_settable(backend, "share", errp)) {
         return;
     }
     backend->share = value;
@@ -477,8 +485,7 @@ static void host_memory_backend_set_reserve(Object *o, bool value, Error **errp)
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(o);
 
-    if (host_memory_backend_mr_inited(backend)) {
-        error_setg(errp, "cannot change property value");
+    if (!host_memory_backend_settable(backend, "reserve", errp)) {
         return;
     }
     if (backend->prealloc && !value) {
-- 
2.55.0



^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-12 12:06 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-12 11:51 [PATCH] backends/hostmem: Factor out "property still settable" check Markus Armbruster
2026-11-12 12:06 ` Daniel P. Berrangé

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.