qga: don't disable fsfreeze commands if vss_init fails

The fsfreeze commands are already written to report an error if
vss_init() fails. Reporting a more specific error message is more
helpful than a generic "command is disabled" message, which cannot
between an admin config decision and lack of platform support.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Konstantin Kostiuk <kkostiuk@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20240712132459.3974109-19-berrange@redhat.com>
Signed-off-by: Konstantin Kostiuk <kkostiuk@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2024-07-12 14:24:55 +01:00 committed by Konstantin Kostiuk
parent 4be55a4fce
commit b81837f0d3
2 changed files with 7 additions and 15 deletions

View File

@ -1203,7 +1203,7 @@ GuestFilesystemInfoList *qmp_guest_get_fsinfo(Error **errp)
GuestFsfreezeStatus qmp_guest_fsfreeze_status(Error **errp) GuestFsfreezeStatus qmp_guest_fsfreeze_status(Error **errp)
{ {
if (!vss_initialized()) { if (!vss_initialized()) {
error_setg(errp, QERR_UNSUPPORTED); error_setg(errp, "fsfreeze not possible as VSS failed to initialize");
return 0; return 0;
} }
@ -1231,7 +1231,7 @@ int64_t qmp_guest_fsfreeze_freeze_list(bool has_mountpoints,
Error *local_err = NULL; Error *local_err = NULL;
if (!vss_initialized()) { if (!vss_initialized()) {
error_setg(errp, QERR_UNSUPPORTED); error_setg(errp, "fsfreeze not possible as VSS failed to initialize");
return 0; return 0;
} }
@ -1266,7 +1266,7 @@ int64_t qmp_guest_fsfreeze_thaw(Error **errp)
int i; int i;
if (!vss_initialized()) { if (!vss_initialized()) {
error_setg(errp, QERR_UNSUPPORTED); error_setg(errp, "fsfreeze not possible as VSS failed to initialize");
return 0; return 0;
} }
@ -1961,18 +1961,6 @@ done:
/* add unsupported commands to the list of blocked RPCs */ /* add unsupported commands to the list of blocked RPCs */
GList *ga_command_init_blockedrpcs(GList *blockedrpcs) GList *ga_command_init_blockedrpcs(GList *blockedrpcs)
{ {
if (!vss_init(true)) {
g_debug("vss_init failed, vss commands are going to be disabled");
const char *list[] = {
"guest-get-fsinfo", "guest-fsfreeze-status",
"guest-fsfreeze-freeze", "guest-fsfreeze-thaw", NULL};
char **p = (char **)list;
while (*p) {
blockedrpcs = g_list_append(blockedrpcs, g_strdup(*p++));
}
}
return blockedrpcs; return blockedrpcs;
} }

View File

@ -1395,6 +1395,10 @@ static GAState *initialize_agent(GAConfig *config, int socket_activation)
" '%s': %s", config->state_dir, strerror(errno)); " '%s': %s", config->state_dir, strerror(errno));
return NULL; return NULL;
} }
if (!vss_init(true)) {
g_debug("vss_init failed, vss commands will not function");
}
#endif #endif
if (ga_is_frozen(s)) { if (ga_is_frozen(s)) {