* [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* Re: [PATCH] backends/hostmem: Factor out "property still settable" check
2026-11-12 11:51 [PATCH] backends/hostmem: Factor out "property still settable" check Markus Armbruster
@ 2026-11-12 12:06 ` Daniel P. Berrangé
0 siblings, 0 replies; 2+ messages in thread
From: Daniel P. Berrangé @ 2026-11-12 12:06 UTC (permalink / raw)
To: Markus Armbruster; +Cc: qemu-devel, david, imammedo
On Thu, Nov 12, 2026 at 12:51:42PM +0100, Markus Armbruster wrote:
> 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(-)
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
With regards,
Daniel
--
|: https://berrange.com ~~ https://hachyderm.io/@berrange :|
|: https://libvirt.org ~~ https://entangle-photo.org :|
|: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|
^ permalink raw reply [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.