mirror of https://github.com/xemu-project/xemu.git
qdev-monitor: add option to report GenericError from find_device_state
Here we just prepare for the following patch, making possible to report GenericError as recommended. This patch doesn't aim to prevent further use of DeviceNotFound by future interfaces: - find_device_state() is used in blk_by_qdev_id() and qmp_get_blk() functions, which may lead to spread of DeviceNotFound anyway - also, nothing prevent simply copy-pasting find_device_state() calls with false argument Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Markus Armbruster <armbru@redhat.com> Acked-by: Raphael Norwitz <raphael@enfabrica.net> Message-Id: <20240920094936.450987-2-vsementsov@yandex-team.ru> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
fa19fe4e3a
commit
9e4cc917e0
|
@ -885,13 +885,20 @@ void qmp_device_add(QDict *qdict, QObject **ret_data, Error **errp)
|
||||||
object_unref(OBJECT(dev));
|
object_unref(OBJECT(dev));
|
||||||
}
|
}
|
||||||
|
|
||||||
static DeviceState *find_device_state(const char *id, Error **errp)
|
/*
|
||||||
|
* Note that creating new APIs using error classes other than GenericError is
|
||||||
|
* not recommended. Set use_generic_error=true for new interfaces.
|
||||||
|
*/
|
||||||
|
static DeviceState *find_device_state(const char *id, bool use_generic_error,
|
||||||
|
Error **errp)
|
||||||
{
|
{
|
||||||
Object *obj = object_resolve_path_at(qdev_get_peripheral(), id);
|
Object *obj = object_resolve_path_at(qdev_get_peripheral(), id);
|
||||||
DeviceState *dev;
|
DeviceState *dev;
|
||||||
|
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND,
|
error_set(errp,
|
||||||
|
(use_generic_error ?
|
||||||
|
ERROR_CLASS_GENERIC_ERROR : ERROR_CLASS_DEVICE_NOT_FOUND),
|
||||||
"Device '%s' not found", id);
|
"Device '%s' not found", id);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -956,7 +963,7 @@ void qdev_unplug(DeviceState *dev, Error **errp)
|
||||||
|
|
||||||
void qmp_device_del(const char *id, Error **errp)
|
void qmp_device_del(const char *id, Error **errp)
|
||||||
{
|
{
|
||||||
DeviceState *dev = find_device_state(id, errp);
|
DeviceState *dev = find_device_state(id, false, errp);
|
||||||
if (dev != NULL) {
|
if (dev != NULL) {
|
||||||
if (dev->pending_deleted_event &&
|
if (dev->pending_deleted_event &&
|
||||||
(dev->pending_deleted_expires_ms == 0 ||
|
(dev->pending_deleted_expires_ms == 0 ||
|
||||||
|
@ -1076,7 +1083,7 @@ BlockBackend *blk_by_qdev_id(const char *id, Error **errp)
|
||||||
|
|
||||||
GLOBAL_STATE_CODE();
|
GLOBAL_STATE_CODE();
|
||||||
|
|
||||||
dev = find_device_state(id, errp);
|
dev = find_device_state(id, false, errp);
|
||||||
if (dev == NULL) {
|
if (dev == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue