From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37396) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XbTb6-0006FO-G3 for qemu-devel@nongnu.org; Tue, 07 Oct 2014 08:10:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XbTb1-0006za-Ow for qemu-devel@nongnu.org; Tue, 07 Oct 2014 08:10:32 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39502) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XbTb1-0006zT-Gp for qemu-devel@nongnu.org; Tue, 07 Oct 2014 08:10:27 -0400 Date: Tue, 7 Oct 2014 14:10:18 +0200 From: Igor Mammedov Message-ID: <20141007141018.546296f2@nial.usersys.redhat.com> In-Reply-To: <1412683191.18043.7.camel@G08FNSTD140041> References: <1411723721-20484-1-git-send-email-imammedo@redhat.com> <1412244525-7153-1-git-send-email-imammedo@redhat.com> <1412683191.18043.7.camel@G08FNSTD140041> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 37/36] qdev: device_del: search for to be unplugged device in 'peripheral' container List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Zhu Guihua Cc: pbonzini@redhat.com, Peter Crosthwaite , Bharata B Rao , qemu-devel@nongnu.org, Andreas =?ISO-8859-1?B?RuRyYmVy?= On Tue, 7 Oct 2014 19:59:51 +0800 Zhu Guihua wrote: > On Thu, 2014-10-02 at 10:08 +0000, Igor Mammedov wrote: > > device_add puts every device with 'id' inside of 'peripheral' > > container using id's value as the last component name. > > Use it by replacing recursive search on sysbus with path > > lookup in 'peripheral' container, which could handle both > > BUS and BUS-less device cases. > > > > If I want to delete device without id inside of 'peripheral-anon' > container, the command 'device_del' does not work. > My suggestion is deleting device by the last component name, is this > feasiable? So far device_del was designed to work only with id-ed devices. What's a use-case for unplugging unnamed device from peripheral-anon? > Thanks. > > Zhu > > > Signed-off-by: Igor Mammedov > > --- > > qdev-monitor.c | 13 +++++++++---- > > 1 file changed, 9 insertions(+), 4 deletions(-) > > > > diff --git a/qdev-monitor.c b/qdev-monitor.c > > index c721451..754437b 100644 > > --- a/qdev-monitor.c > > +++ b/qdev-monitor.c > > @@ -686,15 +686,20 @@ int do_device_add(Monitor *mon, const QDict *qdict, QObject **ret_data) > > > > void qmp_device_del(const char *id, Error **errp) > > { > > - DeviceState *dev; > > + Object *obj; > > + char *root_path = object_get_canonical_path(qdev_get_peripheral()); > > + char *path = g_strdup_printf("%s/%s", root_path, id); > > > > - dev = qdev_find_recursive(sysbus_get_default(), id); > > - if (!dev) { > > + g_free(root_path); > > + obj = object_resolve_path_type(path, TYPE_DEVICE, NULL); > > + g_free(path); > > + > > + if (!obj) { > > error_set(errp, QERR_DEVICE_NOT_FOUND, id); > > return; > > } > > > > - qdev_unplug(dev, errp); > > + qdev_unplug(DEVICE(obj), errp); > > } > > > > void qdev_machine_init(void) > >