From nobody Wed Nov 12 20:45:50 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1573412813; cv=none; d=zoho.com; s=zohoarc; b=fm9YZ+4m5eV2MS0srrSUMpQAp7WZGl7UA1nRjqvsRSnIEmi3kRppmN0LZy1XGXx/XGM95Po5uJphOnycEnhLBUBAZBK61oXQ64eBV6yIzXVoQB7HfK/RgXE3d7AOp9fKkOCJlhzPyghq1YD6/rUr7wKnW4+7y+cpKtNBgJQDXFk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573412813; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=0fdg/73YJk8VxYtH2aJ9KwtrV2rfebhHVIVtBAhkiJ8=; b=djWcxHgAqohbNN4JIUEVynicnJ/buWkrrWtp7rmp9sIadpxGAW8uWmTXLA6SMrsey2u0BCV5AZHdyL4Xiif9Yl/ZO5tuKdQiwbtHWT8AAqrSTtD/8PG4+SQQUX6PBrLbP85FzRD7wxTDc8RXbFgfP8dooHl+8V02Si8n5QFYkpY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1573412813271474.7059551930454; Sun, 10 Nov 2019 11:06:53 -0800 (PST) Received: from localhost ([::1]:44702 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iTsXz-0003GP-A9 for importer@patchew.org; Sun, 10 Nov 2019 14:06:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34937) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iTsV3-0000Fb-G0 for qemu-devel@nongnu.org; Sun, 10 Nov 2019 14:03:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iTsV2-00037D-C3 for qemu-devel@nongnu.org; Sun, 10 Nov 2019 14:03:49 -0500 Received: from relay.sw.ru ([185.231.240.75]:42178) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iTsUz-00033h-7m; Sun, 10 Nov 2019 14:03:45 -0500 Received: from [10.94.4.71] (helo=dptest2.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.3) (envelope-from ) id 1iTsUv-00076X-Qt; Sun, 10 Nov 2019 22:03:41 +0300 From: Denis Plotnikov To: qemu-block@nongnu.org Subject: [PATCH v0 1/2] qdev-properties-system: extend set_pionter for unrealized devices Date: Sun, 10 Nov 2019 22:03:09 +0300 Message-Id: <20191110190310.19799-2-dplotnikov@virtuozzo.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20191110190310.19799-1-dplotnikov@virtuozzo.com> References: <20191110190310.19799-1-dplotnikov@virtuozzo.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, berrange@redhat.com, ehabkost@redhat.com, qemu-devel@nongnu.org, mreitz@redhat.com, pbonzini@redhat.com, den@virtuozzo.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Some device's property can be changed if the device has been already realized. For example, it could be "drive" property of a scsi disk device. So far, set_pointer could operate only on a relized device. The patch extends its interface for operation on an unrealized device. Signed-off-by: Denis Plotnikov --- hw/core/qdev-properties-system.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-sys= tem.c index ba412dd2ca..c534590dcd 100644 --- a/hw/core/qdev-properties-system.c +++ b/hw/core/qdev-properties-system.c @@ -38,9 +38,14 @@ static void get_pointer(Object *obj, Visitor *v, Propert= y *prop, } =20 static void set_pointer(Object *obj, Visitor *v, Property *prop, - void (*parse)(DeviceState *dev, const char *str, - void **ptr, const char *propname, - Error **errp), + void (*parse_realized)(DeviceState *dev, + const char *str, void **ptr, + const char *propname, + Error **errp), + void (*parse_unrealized)(DeviceState *dev, + const char *str, void **p= tr, + const char *propname, + Error **errp), const char *name, Error **errp) { DeviceState *dev =3D DEVICE(obj); @@ -48,11 +53,6 @@ static void set_pointer(Object *obj, Visitor *v, Propert= y *prop, void **ptr =3D qdev_get_prop_ptr(dev, prop); char *str; =20 - if (dev->realized) { - qdev_prop_set_after_realize(dev, name, errp); - return; - } - visit_type_str(v, name, &str, &local_err); if (local_err) { error_propagate(errp, local_err); @@ -63,7 +63,17 @@ static void set_pointer(Object *obj, Visitor *v, Propert= y *prop, *ptr =3D NULL; return; } - parse(dev, str, ptr, prop->name, errp); + + if (dev->realized) { + if (parse_realized) { + parse_realized(dev, str, ptr, prop->name, errp); + } else { + qdev_prop_set_after_realize(dev, name, errp); + } + } else { + parse_unrealized(dev, str, ptr, prop->name, errp); + } + g_free(str); } =20 @@ -178,13 +188,13 @@ static void get_drive(Object *obj, Visitor *v, const = char *name, void *opaque, static void set_drive(Object *obj, Visitor *v, const char *name, void *opa= que, Error **errp) { - set_pointer(obj, v, opaque, parse_drive, name, errp); + set_pointer(obj, v, opaque, NULL, parse_drive, name, errp); } =20 static void set_drive_iothread(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { - set_pointer(obj, v, opaque, parse_drive_iothread, name, errp); + set_pointer(obj, v, opaque, NULL, parse_drive_iothread, name, errp); } =20 const PropertyInfo qdev_prop_drive =3D { --=20 2.17.0