From nobody Tue May 21 05:37:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1680881701; cv=none; d=zohomail.com; s=zohoarc; b=GIXn2XfXf0Nu8t7SckZYrun63lpqcnDXDcG6loMQUI8iLP5R4i7OVpOz3PiBlLjcAwIY4rbSWUYgJB6qkK03NyGeR34q7xuRcX1cJkaRH9e2+zku/hDo+pw/PPoFtue69/guBt1SUKD4bewnNI0hfDdBrTbRwvlBIIriEvJuYvM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1680881701; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0aEPzaPevddFSsPSDOUvK1Jtpd81nOT9/nMcTZup4zQ=; b=VZxxwm/iW5J6nEM8vAwseM64GC30upIaAnD0VRwL95Dc+tCSN31C2GR3nubBTY+iq4B+yqP88xvB3ZE3pIoZno/doKwDsUw23TX7D+M7PxEIbZsV2mc9OW+JDQdK/cLytB8k7WWMdNw71AYt6yD781W7DS7VKRy64ijc7qcA8tI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1680881701604319.96799707957655; Fri, 7 Apr 2023 08:35:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pko5R-0007b3-Tb; Fri, 07 Apr 2023 11:33:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5R-0007at-4F for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:13 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5P-0003TX-2V for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:12 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-27-OtVdL9zPMga0p06Y48HQAA-1; Fri, 07 Apr 2023 11:33:09 -0400 Received: by mail-wm1-f69.google.com with SMTP id o1-20020a05600c4fc100b003edecc610abso890164wmq.7 for ; Fri, 07 Apr 2023 08:33:09 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:9af8:e5f5:7516:fa89]) by smtp.gmail.com with ESMTPSA id iz1-20020a05600c554100b003ed51cdb94csm8437106wmb.26.2023.04.07.08.33.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 08:33:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680881590; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0aEPzaPevddFSsPSDOUvK1Jtpd81nOT9/nMcTZup4zQ=; b=jEnCP0UX4gWxYkTOdRlyQzDY6uP3wH3WdP5i6P7SkEVoAo1UDXjVmZU2qOr+IDrm8W47wQ GFSv+6WZxCsNH2vZWaKUor8iGYRWJIbFjTACXvfoHmm27MNQ+3TSmkZhfOtCppZGKqJ2nH 3pfkYRP1iv9zCwufsb45iDPAv7Ijjxw= X-MC-Unique: OtVdL9zPMga0p06Y48HQAA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680881588; x=1683473588; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0aEPzaPevddFSsPSDOUvK1Jtpd81nOT9/nMcTZup4zQ=; b=RePDVkMEqN69VOd+kwOCjZFzGL+2mwThRf/oxh4MG5joUmXwfEbPzj5roQ0qSkm1G2 vQe1/7nW81HtMjc9mwgdp/Jkx0rIQv5f4Kpd6MMINoaiPQ1D0YvknBHEn7byRrDNqxXj 2Hetno5URvA6AcvhzighUTbWLrWo8178KXp+kP06P7XyRTVzrCfTp0YRQ+bOlijYVu2q rcGXYOPyzw34LKWJ9BrzCyzJv+xQPaBxlkfRp+p8Fj+kZW7ofhzBdzegyLkz/ciwVE3X RZRQSra1ni7gIGA3PomsTnEzwCht3HDXYwrjYUiCd60S4Yr8YFEKfieb5wgnqWjlThX1 4LDg== X-Gm-Message-State: AAQBX9fwAOEAcQw1e8khCe9WHeuQavRbfjg0FWF0NsuUynW3+/v2+Dsc xc9U8PUC3HxkTNEMz6OAA9jv/ekAq0V8PaF8wXOm+W809edlOQY1Daly19X46kWA2+9wMM9+hHZ 1ydUvpKH5kiehUqxGjy2bVDPKM0YrhMv9MDgMCGNqiFP/GoArnSYsE8vidO25FhJuIMliol7yll k= X-Received: by 2002:adf:f1c9:0:b0:2cf:e3d8:5dff with SMTP id z9-20020adff1c9000000b002cfe3d85dffmr1177790wro.9.1680881587794; Fri, 07 Apr 2023 08:33:07 -0700 (PDT) X-Google-Smtp-Source: AKy350aM7mhPPrcXFxWuGz7yQXAQ3k0b4bVdqleRTYu9An/AsXxxNtRMaSnEpIQFVW+LmWnrR00Gbw== X-Received: by 2002:adf:f1c9:0:b0:2cf:e3d8:5dff with SMTP id z9-20020adff1c9000000b002cfe3d85dffmr1177778wro.9.1680881587384; Fri, 07 Apr 2023 08:33:07 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, kwolf@redhat.com, qemu-block@nongnu.org, hreitz@redhat.com Subject: [PATCH 1/8] block: move has_variable_length to BlockLimits Date: Fri, 7 Apr 2023 17:32:56 +0200 Message-Id: <20230407153303.391121-2-pbonzini@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230407153303.391121-1-pbonzini@redhat.com> References: <20230407153303.391121-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1680881702898100003 Content-Type: text/plain; charset="utf-8" At the protocol level, has_variable_length only needs to be true in the very special case of host CD-ROM drives, so that they do not need an explicit monitor command to read the new size when a disc is loaded in the tray. However, at the format level has_variable_length has to be true for all raw blockdevs and for all filters, even though in practice the length depends on the underlying file and thus will not change except in the case of host CD-ROM drives. As a first step towards computing an accurate value of has_variable_length, add the value into the BlockLimits structure and initialize the field from the BlockDriver. Signed-off-by: Paolo Bonzini Reviewed-by: Eric Blake --- block.c | 2 +- block/io.c | 6 ++++++ include/block/block_int-common.h | 8 ++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/block.c b/block.c index 89a79c321fab..b1b7c7efe036 100644 --- a/block.c +++ b/block.c @@ -5849,7 +5849,7 @@ int64_t coroutine_fn bdrv_co_nb_sectors(BlockDriverSt= ate *bs) if (!drv) return -ENOMEDIUM; =20 - if (drv->has_variable_length) { + if (bs->bl.has_variable_length) { int ret =3D bdrv_co_refresh_total_sectors(bs, bs->total_sectors); if (ret < 0) { return ret; diff --git a/block/io.c b/block/io.c index db438c765757..c49917c74677 100644 --- a/block/io.c +++ b/block/io.c @@ -182,6 +182,8 @@ void bdrv_refresh_limits(BlockDriverState *bs, Transact= ion *tran, Error **errp) drv->bdrv_aio_preadv || drv->bdrv_co_preadv_part) ? 1 : 512; =20 + bs->bl.has_variable_length =3D drv->has_variable_length; + /* Take some limits from the children as a default */ have_limits =3D false; QLIST_FOREACH(c, &bs->children, next) { @@ -190,6 +192,10 @@ void bdrv_refresh_limits(BlockDriverState *bs, Transac= tion *tran, Error **errp) bdrv_merge_limits(&bs->bl, &c->bs->bl); have_limits =3D true; } + + if (c->role & BDRV_CHILD_FILTERED) { + bs->bl.has_variable_length |=3D c->bs->bl.has_variable_length; + } } =20 if (!have_limits) { diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index ce51c1f7f999..95c934589571 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -855,6 +855,14 @@ typedef struct BlockLimits { =20 /* maximum number of iovec elements */ int max_iov; + + /* + * true if the length of the underlying file can change, and QEMU + * is expected to adjust automatically. Mostly for CD-ROM drives, + * whose length is zero when the tray is empty (they don't need + * an explicit monitor command to load the disk inside the guest). + */ + bool has_variable_length; } BlockLimits; =20 typedef struct BdrvOpBlocker BdrvOpBlocker; --=20 2.39.2 From nobody Tue May 21 05:37:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1680881654; cv=none; d=zohomail.com; s=zohoarc; b=ko+0iDXshirj+8CusmaKK4uubA7/KFBFAdpGegm7VNZVrCoB7H/WjmfBGWbmB2u3P3IpcA0Wcy0bkYRSfnIs6p/MOEleBqwWV+O7/5YyoUO5ecUpzrDuBUtGY6ENW/la1L8xQFvcBvJ52GuFWq+RqjbYFRwHijbOr0paRGa5YPk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1680881654; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=HpTNIJp2jzLQWaYj8M/uAT/YjQMVtu79+bYHv9/gMhM=; b=eNrymn3RGPRA/+I7QE8cg3dPDhjOc1s4aiRfcHNHXJib78MQGDukwpoYJW7XRwogACfBg0u5hpnXIjR8vddstKJdSfWTrv6PBw7+PBLGxfgik62kq6+Z6vnKsvmFGIdLXOUp1ogW3y/xythOjwL3TTV6jByBH54aznWuOy4wBzM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 168088165414445.67050383748824; Fri, 7 Apr 2023 08:34:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pko5V-0007dF-3i; Fri, 07 Apr 2023 11:33:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5T-0007bp-E8 for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5R-0003aM-PB for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:15 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-277-3jJX1g0WPNSKxyETachBFA-1; Fri, 07 Apr 2023 11:33:11 -0400 Received: by mail-wm1-f72.google.com with SMTP id gw11-20020a05600c850b00b003ee8db23ef9so758889wmb.8 for ; Fri, 07 Apr 2023 08:33:11 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:9af8:e5f5:7516:fa89]) by smtp.gmail.com with ESMTPSA id n11-20020a5d420b000000b002ceacff44c7sm4751913wrq.83.2023.04.07.08.33.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 08:33:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680881593; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=HpTNIJp2jzLQWaYj8M/uAT/YjQMVtu79+bYHv9/gMhM=; b=h2OiZ1MHmvSaXlpzE5zvY/MvvIeph9VfiOuUzDVa2fiqiueGXRyF9FNFJ8eY8aT7ZNXD/U usKBjfNLCaxazgadT8a0Q+92vodCtF4R3MXTKDUz5y0UBW81OBGXUgDFyKxH/U3tDyNaNJ tnbQPi2hX9k7GqEI7IM5NNreLFnhidw= X-MC-Unique: 3jJX1g0WPNSKxyETachBFA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680881589; x=1683473589; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HpTNIJp2jzLQWaYj8M/uAT/YjQMVtu79+bYHv9/gMhM=; b=pzRjAzmPSIwjSSGWLjvHb0n8pnBBXfuqiiphCjtjvyO+YpPCF9ZZlhuhqLKzKKeZ/Z 7uWG5Zep++vurOQiQmRgVowdiWuqqy4GtV6h8FmDKlz8SDebbubCfg8Rvh4EWjlQW3a2 89Ki85cFQrAHL/53PsYdi3fFUjrScr8zguFCn0QDEdeko+d/oqDhBX0Ympp69MHME0+p qJaUb9MBGp/RMyrjaCamaz2sxCpBjIe6hpQ+Mg9ThzOMWleukEPft+GYyjxbvq4qFKph WauYgcMH1exwcYwnBMHGqOMO6p+yDpMeWDgSVNiDCmbPJ4OBhVFhEY9qHS7sJM+9eTOa weMw== X-Gm-Message-State: AAQBX9eu4Yq2bVGb4C/D4hXbBmMfPPgFf83xCPsAj5970fivlf91n/u4 liSC1F98YpmTL+wpEeDQOz2k4FHk7C5iZWr9sDH3MwQ/jBm8Cd71vWwa0tEcVT06dJBq7+kfOup ZQmG3DAVZrBpuNZXS5RkLm+o1MSp7xZsMuRU474Xs2VqE09KFi6Np0vZJaffwZNiJC2okVsu6u2 8= X-Received: by 2002:a05:6000:12cb:b0:2e6:348:5fef with SMTP id l11-20020a05600012cb00b002e603485fefmr1974179wrx.55.1680881589492; Fri, 07 Apr 2023 08:33:09 -0700 (PDT) X-Google-Smtp-Source: AKy350aSWKUhipA5WWZc4xUget97iWnYnsU5s8XukW90/I7DzOMDzvgfQ3A3KmxHKIu2kUjmhMbViA== X-Received: by 2002:a05:6000:12cb:b0:2e6:348:5fef with SMTP id l11-20020a05600012cb00b002e603485fefmr1974166wrx.55.1680881589220; Fri, 07 Apr 2023 08:33:09 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, kwolf@redhat.com, qemu-block@nongnu.org, hreitz@redhat.com Subject: [PATCH 2/8] block: remove has_variable_length from filters Date: Fri, 7 Apr 2023 17:32:57 +0200 Message-Id: <20230407153303.391121-3-pbonzini@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230407153303.391121-1-pbonzini@redhat.com> References: <20230407153303.391121-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1680881654797100001 Content-Type: text/plain; charset="utf-8" Filters automatically get has_variable_length from their underlying BlockDriverState. There is no need to mark them as variable-length in the BlockDriver. Signed-off-by: Paolo Bonzini Reviewed-by: Eric Blake --- block/copy-on-read.c | 1 - block/filter-compress.c | 1 - block/preallocate.c | 1 - block/replication.c | 1 - 4 files changed, 4 deletions(-) diff --git a/block/copy-on-read.c b/block/copy-on-read.c index cc0f848b0f10..b4d6b7efc30f 100644 --- a/block/copy-on-read.c +++ b/block/copy-on-read.c @@ -259,7 +259,6 @@ static BlockDriver bdrv_copy_on_read =3D { .bdrv_co_eject =3D cor_co_eject, .bdrv_co_lock_medium =3D cor_co_lock_medium, =20 - .has_variable_length =3D true, .is_filter =3D true, }; =20 diff --git a/block/filter-compress.c b/block/filter-compress.c index ac285f4b6657..320d9576fa1c 100644 --- a/block/filter-compress.c +++ b/block/filter-compress.c @@ -146,7 +146,6 @@ static BlockDriver bdrv_compress =3D { .bdrv_co_eject =3D compress_co_eject, .bdrv_co_lock_medium =3D compress_co_lock_medium, =20 - .has_variable_length =3D true, .is_filter =3D true, }; =20 diff --git a/block/preallocate.c b/block/preallocate.c index 71c360180945..4d821250366e 100644 --- a/block/preallocate.c +++ b/block/preallocate.c @@ -558,7 +558,6 @@ BlockDriver bdrv_preallocate_filter =3D { .bdrv_set_perm =3D preallocate_set_perm, .bdrv_child_perm =3D preallocate_child_perm, =20 - .has_variable_length =3D true, .is_filter =3D true, }; =20 diff --git a/block/replication.c b/block/replication.c index de01f9618467..ea4bf1aa8012 100644 --- a/block/replication.c +++ b/block/replication.c @@ -762,7 +762,6 @@ static BlockDriver bdrv_replication =3D { =20 .is_filter =3D true, =20 - .has_variable_length =3D true, .strong_runtime_opts =3D replication_strong_runtime_opts, }; =20 --=20 2.39.2 From nobody Tue May 21 05:37:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1680881654; cv=none; d=zohomail.com; s=zohoarc; b=HV9DpZmdKPWbQY2DiDPJ8KhMwc9Hvy+qwwImgdmY7BeWdrXQK2D/dxTeVsfPI6SgRNerhoG/gr3uEr+Ub1jVfKrZhy5winrCppQlsWyjOrUvGveBkXVpbpXxYqPkYehOdXpw73OEDjJ3lgvR3V7Zog1gTLBQ8dz7wyqibRudAk4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1680881654; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=xdBI/pFdJ1vkZw1lAkV8/V3VCAkQCpljxYC4IS2P4yc=; b=Qmc67vAcobCziUheNMHGOSFDnMiVBgW7vKUh9HOnECCPRGcMfOcz+6Pty0BrYGPUNeVsqJdUlQ2SBPUshe6Lpl9SVHMDtNGizmhaj+as+0aOEgi05ImlKmB34C3F3fQsd5EJSgwiP3PCWH8F6ZFkybfY8PDMr35b0ijAD6IAqbc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1680881654598713.9648771854096; Fri, 7 Apr 2023 08:34:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pko5X-0007e7-46; Fri, 07 Apr 2023 11:33:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5U-0007cd-GB for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:16 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5T-0003bR-3E for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:16 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-240-a0uS7LdQNy-FAqdL8a8UfA-1; Fri, 07 Apr 2023 11:33:13 -0400 Received: by mail-wm1-f69.google.com with SMTP id p10-20020a05600c358a00b003edf7d484d4so19881974wmq.0 for ; Fri, 07 Apr 2023 08:33:13 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:9af8:e5f5:7516:fa89]) by smtp.gmail.com with ESMTPSA id a6-20020adfdd06000000b002da76acfee1sm4793332wrm.28.2023.04.07.08.33.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 08:33:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680881594; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xdBI/pFdJ1vkZw1lAkV8/V3VCAkQCpljxYC4IS2P4yc=; b=PfFSC1NtVdBWUJ/lTogD/6U244gLS5qAnD6J/0Hchq5gN8ckecaLZ63qjIK3qqJXDxcXW8 XwpJh/k8OUI6kKsx3ow97WN9aWxlE8Ta6N6KM3+SZ4AUtrVr32RCzZkFf0taTtLFbT3K/j gJnf3jLKwC9I+RcJOGKpVEF27WZOduU= X-MC-Unique: a0uS7LdQNy-FAqdL8a8UfA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680881592; x=1683473592; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xdBI/pFdJ1vkZw1lAkV8/V3VCAkQCpljxYC4IS2P4yc=; b=Yb2RfqjgO3WQAHE5aDpRr0xEHNRlXst+lb3DrLEufCfS6anhNTpjLRe62MPwUj+jDM i4vWcJTGR0/6EQZUhlNIBriAWNBx/PTLUM3W2pjTr91lcNoqzuRazAVzbisoauA4S5Kt 6sCNrFgoUgn30tko/Gj9LJgAL5MBvME+YxxwkN7J2ekmdPe4yx38arAm3Ul+ZOa38Agc qAwayLrtqoCrmLXaGK7AzrQChwys6+10jwdcA1J3ftWQngt9SkRgEVqRaCaOSsqWLehy UTlnsVL7TuVT7C4hr+6cf8LT8R/ewZuP21vxzO14DoGyndNOEeYlVYZrSnUFseSWo4LE 6lKQ== X-Gm-Message-State: AAQBX9cDOGUaTNN+ti8fTMcZHgmuT52x7RZ2n7TG+ZX6uH81NYkIrzql vST0X3sMU+lNOAJGjSokKRAEgTozHyEwPCnNp1N4Z2JR3gtoSNyCkI9DhpiTHu8yAQ+g4RkPCnF ZH5juT+O7s5y6MEn9NAVRPq1mHuo9I80F9O6boP8vbvHjqbAVhVmWMgYEwISLjoXpRvxRHANL5Z E= X-Received: by 2002:a05:600c:2294:b0:3f0:7f7f:c886 with SMTP id 20-20020a05600c229400b003f07f7fc886mr120999wmf.35.1680881592030; Fri, 07 Apr 2023 08:33:12 -0700 (PDT) X-Google-Smtp-Source: AKy350Y5xj/V1fSWzfQa1LO01JIweN/wzlJ77CJptjR4r7dytAaiX+3becfOfkrvK1iTE9inDWw3ZQ== X-Received: by 2002:a05:600c:2294:b0:3f0:7f7f:c886 with SMTP id 20-20020a05600c229400b003f07f7fc886mr120982wmf.35.1680881591713; Fri, 07 Apr 2023 08:33:11 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, kwolf@redhat.com, qemu-block@nongnu.org, hreitz@redhat.com Subject: [PATCH 3/8] block: refresh bs->total_sectors on reopen Date: Fri, 7 Apr 2023 17:32:58 +0200 Message-Id: <20230407153303.391121-4-pbonzini@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230407153303.391121-1-pbonzini@redhat.com> References: <20230407153303.391121-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1680881656212100007 Content-Type: text/plain; charset="utf-8" After reopening a BlockDriverState, it's possible that the size of the underlying file has changed. This for example is covered by test 171. Right now, this is handled by the raw driver's has_variable_length =3D true setting. Since this will be removed by the next patch, handle it on reopen instead, together with the existing bdrv_refresh_limits. Signed-off-by: Paolo Bonzini Reviewed-by: Eric Blake --- block.c | 1 + 1 file changed, 1 insertion(+) diff --git a/block.c b/block.c index b1b7c7efe036..9de50ac7c811 100644 --- a/block.c +++ b/block.c @@ -4918,6 +4918,7 @@ static void bdrv_reopen_commit(BDRVReopenState *reope= n_state) qdict_del(bs->options, "backing"); =20 bdrv_refresh_limits(bs, NULL, NULL); + bdrv_refresh_total_sectors(bs, bs->total_sectors); } =20 /* --=20 2.39.2 From nobody Tue May 21 05:37:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1680881676; cv=none; d=zohomail.com; s=zohoarc; b=C9B5tfE+s38wEhDEqhXva7pqbmee7lShBqi7VSXTNSRTZarOdobr+hi57Ig93jtgoXpu+kLQtIXFT0derL69kBX/JkDLNVpsUVl8zwJmDPycstoh6yAMLgQVCTT7qfNucUDqHNrPKW0XcdCfNIIwImIC3eLGhaHp83GRqhpFaC8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1680881676; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=mJsQA3yW7BGWd2sJxofAOzKxJ7KMYBFg1MeiT8rtfl8=; b=EkoT6eA1JWCYmksQovue6gOZrub+6iDU0g+vwpFaGtCoLUwidAZw/45FmND37YZ6EcoDPfT3+TSUuJA65yoHBreX/5CjJAR6b4PVYHLLrwa0dQ2EPGqxuCc1LCAmhChZF03+MldqU7Fjg+OLkykSS18kMZa/CWEfmukZJ/na330= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1680881676619293.0173226060865; Fri, 7 Apr 2023 08:34:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pko5X-0007eA-Mu; Fri, 07 Apr 2023 11:33:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5W-0007do-Nj for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:18 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5V-0003dl-13 for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:18 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-197-a0QN3LP3OJOGVK0wImfx5g-1; Fri, 07 Apr 2023 11:33:15 -0400 Received: by mail-wm1-f69.google.com with SMTP id r11-20020a05600c458b00b003eea8d25f06so19868798wmo.1 for ; Fri, 07 Apr 2023 08:33:14 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:9af8:e5f5:7516:fa89]) by smtp.gmail.com with ESMTPSA id k21-20020a05600c1c9500b003ee1acdaf95sm8752473wms.36.2023.04.07.08.33.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 08:33:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680881596; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mJsQA3yW7BGWd2sJxofAOzKxJ7KMYBFg1MeiT8rtfl8=; b=Z+Di64sDiGT4IVN9jd3vtEm33IT8aZDvtVuH4CcNG1lSegjDa4gj3VwJI9DfLL9OMxIHYK UEEMXLiQnbRFTXpr9J5vq/qo9kE+HCvezyZv1gUGRcgJnmVRp4tE6gPe2HAnhmZ7Ye5/f+ MYg4E0ZEzX2eeSQgDdvbx4QRVFatmS8= X-MC-Unique: a0QN3LP3OJOGVK0wImfx5g-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680881593; x=1683473593; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mJsQA3yW7BGWd2sJxofAOzKxJ7KMYBFg1MeiT8rtfl8=; b=ZsorFbMxToVqRLd2DEkzFHAMAvD2RNx0Y0Yn7R/G2H2wQcz8646au9U5JrYiNPKxV0 BM+4UNySBhS+faqvpKY3k+PlRxnjTCXNrSL/fSUaEBu5YIoifyW50JTj4n13OOxsDXwc PkDm6fdlcebPvTNu0UCAJoDft5qpmJhMGUaOqpCscizdkxGtHudp3tytcw5OOPdueBg7 kbQHVpnJGD/vb4GrO+iyIPTZQG3XQ+l298TQvjozng8tF4GRzEfqSyKbG4iYvldmyXD9 GqSnKBYsgGhw9AA3//+2ZYllRHJ0KRsirX0ngMQOsJhQr3nKPI56p+YtxSHe9tRJLkVD E0XA== X-Gm-Message-State: AAQBX9dyM43BLBPai3MKO0cYx0kK5nuONDVbr8o25HlDqNLSOcHo7iZf /6hWSIsB+oyGq6iGLxbu+/UMTaQvaiECDE7g7XtqTmjNAZOGtqxdgDFLvrny7zGCZqbEjy9hPGS se1VwIubQsvhdrfjSD6IjRZqPXfCKhaXPYAxSAXKyhBauG36jlShtAZUUPpqSzcsWdfn9e9ruep 8= X-Received: by 2002:a1c:4c17:0:b0:3ed:ce50:435a with SMTP id z23-20020a1c4c17000000b003edce50435amr1543874wmf.10.1680881593576; Fri, 07 Apr 2023 08:33:13 -0700 (PDT) X-Google-Smtp-Source: AKy350Z+RTpH5MGjN89hcRuuUggyfAqQClgQ/1lkgSiUUNpMGMW+YHb2domIAqoWSrdDBONR7rXTTQ== X-Received: by 2002:a1c:4c17:0:b0:3ed:ce50:435a with SMTP id z23-20020a1c4c17000000b003edce50435amr1543858wmf.10.1680881593277; Fri, 07 Apr 2023 08:33:13 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, kwolf@redhat.com, qemu-block@nongnu.org, hreitz@redhat.com Subject: [PATCH 4/8] block: remove has_variable_length from BlockDriver Date: Fri, 7 Apr 2023 17:32:59 +0200 Message-Id: <20230407153303.391121-5-pbonzini@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230407153303.391121-1-pbonzini@redhat.com> References: <20230407153303.391121-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1680881677105100001 Content-Type: text/plain; charset="utf-8" Fill in the field in BlockLimits directly for host devices, and copy it from there for the raw format. Signed-off-by: Paolo Bonzini Reviewed-by: Eric Blake --- block/file-posix.c | 12 ++++++++---- block/file-win32.c | 2 +- block/io.c | 2 -- block/raw-format.c | 3 ++- include/block/block_int-common.h | 2 -- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/block/file-posix.c b/block/file-posix.c index 5b0f2e6d261b..c7b723368e53 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -3732,6 +3732,12 @@ static void cdrom_parse_filename(const char *filenam= e, QDict *options, { bdrv_parse_filename_strip_prefix(filename, "host_cdrom:", options); } + +static void cdrom_refresh_limits(BlockDriverState *bs, Error **errp) +{ + bs->bl.has_variable_length =3D true; + raw_refresh_limits(bs, errp); +} #endif =20 #ifdef __linux__ @@ -3827,14 +3833,13 @@ static BlockDriver bdrv_host_cdrom =3D { .bdrv_co_preadv =3D raw_co_preadv, .bdrv_co_pwritev =3D raw_co_pwritev, .bdrv_co_flush_to_disk =3D raw_co_flush_to_disk, - .bdrv_refresh_limits =3D raw_refresh_limits, + .bdrv_refresh_limits =3D cdrom_refresh_limits, .bdrv_co_io_plug =3D raw_co_io_plug, .bdrv_co_io_unplug =3D raw_co_io_unplug, .bdrv_attach_aio_context =3D raw_aio_attach_aio_context, =20 .bdrv_co_truncate =3D raw_co_truncate, .bdrv_co_getlength =3D raw_co_getlength, - .has_variable_length =3D true, .bdrv_co_get_allocated_file_size =3D raw_co_get_allocated_file_size, =20 /* removable device support */ @@ -3956,14 +3961,13 @@ static BlockDriver bdrv_host_cdrom =3D { .bdrv_co_preadv =3D raw_co_preadv, .bdrv_co_pwritev =3D raw_co_pwritev, .bdrv_co_flush_to_disk =3D raw_co_flush_to_disk, - .bdrv_refresh_limits =3D raw_refresh_limits, + .bdrv_refresh_limits =3D cdrom_refresh_limits, .bdrv_co_io_plug =3D raw_co_io_plug, .bdrv_co_io_unplug =3D raw_co_io_unplug, .bdrv_attach_aio_context =3D raw_aio_attach_aio_context, =20 .bdrv_co_truncate =3D raw_co_truncate, .bdrv_co_getlength =3D raw_co_getlength, - .has_variable_length =3D true, .bdrv_co_get_allocated_file_size =3D raw_co_get_allocated_file_size, =20 /* removable device support */ diff --git a/block/file-win32.c b/block/file-win32.c index 1a5f9e6a9b13..48b790d91739 100644 --- a/block/file-win32.c +++ b/block/file-win32.c @@ -836,6 +836,7 @@ static void hdev_refresh_limits(BlockDriverState *bs, E= rror **errp) { /* XXX Does Windows support AIO on less than 512-byte alignment? */ bs->bl.request_alignment =3D 512; + bs->bl.has_variable_length =3D true; } =20 static int hdev_open(BlockDriverState *bs, QDict *options, int flags, @@ -931,7 +932,6 @@ static BlockDriver bdrv_host_device =3D { .bdrv_attach_aio_context =3D raw_attach_aio_context, =20 .bdrv_co_getlength =3D raw_co_getlength, - .has_variable_length =3D true, .bdrv_co_get_allocated_file_size =3D raw_co_get_allocated_file_size, }; =20 diff --git a/block/io.c b/block/io.c index c49917c74677..6fa199337472 100644 --- a/block/io.c +++ b/block/io.c @@ -182,8 +182,6 @@ void bdrv_refresh_limits(BlockDriverState *bs, Transact= ion *tran, Error **errp) drv->bdrv_aio_preadv || drv->bdrv_co_preadv_part) ? 1 : 512; =20 - bs->bl.has_variable_length =3D drv->has_variable_length; - /* Take some limits from the children as a default */ have_limits =3D false; QLIST_FOREACH(c, &bs->children, next) { diff --git a/block/raw-format.c b/block/raw-format.c index 66783ed8e77b..06b8030d9d40 100644 --- a/block/raw-format.c +++ b/block/raw-format.c @@ -377,6 +377,8 @@ raw_co_get_info(BlockDriverState *bs, BlockDriverInfo *= bdi) =20 static void raw_refresh_limits(BlockDriverState *bs, Error **errp) { + bs->bl.has_variable_length =3D bs->file->bs->bl.has_variable_length; + if (bs->probed) { /* To make it easier to protect the first sector, any probed * image is restricted to read-modify-write on sub-sector @@ -623,7 +625,6 @@ BlockDriver bdrv_raw =3D { .bdrv_co_truncate =3D &raw_co_truncate, .bdrv_co_getlength =3D &raw_co_getlength, .is_format =3D true, - .has_variable_length =3D true, .bdrv_measure =3D &raw_measure, .bdrv_co_get_info =3D &raw_co_get_info, .bdrv_refresh_limits =3D &raw_refresh_limits, diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index 95c934589571..013d419444d9 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -158,8 +158,6 @@ struct BlockDriver { */ bool supports_backing; =20 - bool has_variable_length; - /* * Drivers setting this field must be able to work with just a plain * filename with ':' as a prefix, and no other options. --=20 2.39.2 From nobody Tue May 21 05:37:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1680881703; cv=none; d=zohomail.com; s=zohoarc; b=GmEruI0OdzQi1IZDwpMpBr4r0awbfN6lObOXFKEWSY8fUrOQsPGg2XBXiN8vsIC02cmrBBlkyMkqRv4ShjAf3vt6rJNJnsTiYZi1tQz2UB6W+mAsogXXahI+6LrA3dwKNfTEnJSInmHrB3C9+RfGJx9k+4B/IaNc5se6jZpoRGg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1680881703; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=m/B78WBf6S8LJMMyfkMxgDgfebDyjrCYtAJ8gzCiWac=; b=n51XjGqM5YsxZ8WQiDkUsUZNSfMtKvG7+syaw1dPHAaWz7X9h6iZXqivFWvvyZJFEljC45flPm63h81oSDPZnixqR/HRk254T0CFDDkC/k/SINDkaFliXlzZvZpYFtmv6xRfebMZFxIG+Xo25j+0FMpfdu4lA+a8hOl817cIxgM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1680881703338137.67506713428872; Fri, 7 Apr 2023 08:35:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pko5h-0007k6-Ed; Fri, 07 Apr 2023 11:33:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5f-0007jK-Hv for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:27 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5e-0003sP-6U for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:27 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-55-keFLcLSqPca6OpXVSnHR2A-1; Fri, 07 Apr 2023 11:33:16 -0400 Received: by mail-wm1-f70.google.com with SMTP id k1-20020a05600c1c8100b003ee6dbceb81so19870657wms.5 for ; Fri, 07 Apr 2023 08:33:16 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:9af8:e5f5:7516:fa89]) by smtp.gmail.com with ESMTPSA id p15-20020a1c740f000000b003edc11c2ecbsm4982442wmc.4.2023.04.07.08.33.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 08:33:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680881605; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=m/B78WBf6S8LJMMyfkMxgDgfebDyjrCYtAJ8gzCiWac=; b=VhBbMrFmfRSWD6P7IxNyRqKYV9eIF/iJrFY24idg3Ujlfy7zT/DX/SVgyv9JenYZ2YN8+P ag9zaz8bMCbVSAWzC7kc0NJwsDikI+g0joRLH91AS5GDnNHhESTxpg+HIEMZAvhU50fxON TYD3kJmgVAdgYPV46x0OW7rkF5X4iWk= X-MC-Unique: keFLcLSqPca6OpXVSnHR2A-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680881595; x=1683473595; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=m/B78WBf6S8LJMMyfkMxgDgfebDyjrCYtAJ8gzCiWac=; b=5+SWdvcAmAnDDq8MsELtz18jl/7gByidi3RDTSeN/s1hARNzwDsy/SObjz2WnrHmcC 7h3Ot2glJ0+/7Cj8ObZFssD/HCaHGWB8k5POHA8OVUg/zPMqAyYL9QhEpu0gk+bMPkas aHDcztAd5a8vksSpRg25C+GXqwAFr6n88DV9Mv9eCAPB6H6aC1utYTpuKZII+Ki/Hxpt EOpInkx+MHbMwumlvqL4COksUGGBUc4xW6gI+R+oL1bxHGMhfifK4dySdf8yA0Sz79b1 LFhhNhLwVjFMfQk1Y6mTPH3XGTC9Vc6JjVwL7uxEZ7srMMKhmGCSHMWRpwwo4zbJkuO5 IK2g== X-Gm-Message-State: AAQBX9cFm4R/nZuYNvAyBzMZWuFgZMVT1/PDqHMXvA2LA+uZ1LCrWaoN TEvF/p4c84J/o8WEOr/ulsfdjHKglSJKu19KkakqWBffYj6fwnJGC6+ki7zUxd6Ps/OAzZeEwVl 6Ie2RboGeinOE0VnZyISwVU+eMencnjcJ6EQs9hw3lAw9WzYjvXOR5H8yY6JALNxdqvWNubnvMU A= X-Received: by 2002:a1c:4c08:0:b0:3ed:33a1:ba8e with SMTP id z8-20020a1c4c08000000b003ed33a1ba8emr1982445wmf.1.1680881595215; Fri, 07 Apr 2023 08:33:15 -0700 (PDT) X-Google-Smtp-Source: AKy350ZAbRgntLJk5dmSOudJPW0EJQWyIJxN0+mgyP6Jwk2I0Bna4YIJDQHbNYXmE0adru3/iK53nQ== X-Received: by 2002:a1c:4c08:0:b0:3ed:33a1:ba8e with SMTP id z8-20020a1c4c08000000b003ed33a1ba8emr1982425wmf.1.1680881594950; Fri, 07 Apr 2023 08:33:14 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, kwolf@redhat.com, qemu-block@nongnu.org, hreitz@redhat.com Subject: [PATCH 5/8] migration/block: replace uses of blk_nb_sectors that do not check result Date: Fri, 7 Apr 2023 17:33:00 +0200 Message-Id: <20230407153303.391121-6-pbonzini@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230407153303.391121-1-pbonzini@redhat.com> References: <20230407153303.391121-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1680881704916100005 Content-Type: text/plain; charset="utf-8" Uses of blk_nb_sectors must check whether the result is negative. Otherwise, underflow can happen. Fortunately, alloc_aio_bitmap() and bmds_aio_inflight() both have an alternative way to retrieve the number of sectors in the file. Signed-off-by: Paolo Bonzini Reviewed-by: Eric Blake --- migration/block.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/migration/block.c b/migration/block.c index 426a25bb192e..b2497bbd329c 100644 --- a/migration/block.c +++ b/migration/block.c @@ -195,7 +195,7 @@ static int bmds_aio_inflight(BlkMigDevState *bmds, int6= 4_t sector) { int64_t chunk =3D sector / (int64_t)BDRV_SECTORS_PER_DIRTY_CHUNK; =20 - if (sector < blk_nb_sectors(bmds->blk)) { + if (sector < bmds->total_sectors) { return !!(bmds->aio_bitmap[chunk / (sizeof(unsigned long) * 8)] & (1UL << (chunk % (sizeof(unsigned long) * 8)))); } else { @@ -229,10 +229,9 @@ static void bmds_set_aio_inflight(BlkMigDevState *bmds= , int64_t sector_num, =20 static void alloc_aio_bitmap(BlkMigDevState *bmds) { - BlockBackend *bb =3D bmds->blk; int64_t bitmap_size; =20 - bitmap_size =3D blk_nb_sectors(bb) + BDRV_SECTORS_PER_DIRTY_CHUNK * 8 = - 1; + bitmap_size =3D bmds->total_sectors + BDRV_SECTORS_PER_DIRTY_CHUNK * 8= - 1; bitmap_size /=3D BDRV_SECTORS_PER_DIRTY_CHUNK * 8; =20 bmds->aio_bitmap =3D g_malloc0(bitmap_size); --=20 2.39.2 From nobody Tue May 21 05:37:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1680881704; cv=none; d=zohomail.com; s=zohoarc; b=llDrruOFx0CpKkUlbXAoSUQBak3vB3TM120ej1S7bDYTM4lUW0HUIq+x0M/m4J4niyNLE3/SKF0HJYvGW0ryRNwRMaavjXpMtNa13JDDRyQJBsxINOlJMVCfDAPYz3N5kz9Em/815iKJL6DSwjG33wik2efJIEp+6QRWL36Ah2M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1680881704; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=rMGB44GjwTSeWHp8nz33XjPowAu3Zq2W6k1C8KD5A/0=; b=R+2h2fS0RJ2bl2NOJhjPU7Ezj9p3LhYkeoP9vpS90HzancG/mN8HIswDMGQ5JuOBCGh7oYAFL4norZGB8Z01IAKNsoKzZssvNZamNoc6X6T9GfYeh0i2dyuyW/+BuTNPExOkI1Grg71tZg9YaAn/76hHpYbmQ9Xdwg7t+lLi2f8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1680881704910667.3866837839113; Fri, 7 Apr 2023 08:35:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pko5c-0007hg-Mm; Fri, 07 Apr 2023 11:33:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5b-0007h0-0m for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:23 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5Y-0003hX-52 for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:22 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-635-FfEJniDiP4C3YyKyPSeJaw-1; Fri, 07 Apr 2023 11:33:18 -0400 Received: by mail-wm1-f69.google.com with SMTP id m7-20020a05600c4f4700b003ee7e120bdfso19252454wmq.6 for ; Fri, 07 Apr 2023 08:33:18 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:9af8:e5f5:7516:fa89]) by smtp.gmail.com with ESMTPSA id z3-20020a5d4c83000000b002e55cc69169sm4742937wrs.38.2023.04.07.08.33.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 08:33:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680881599; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rMGB44GjwTSeWHp8nz33XjPowAu3Zq2W6k1C8KD5A/0=; b=hs1BWdoboWLIxD+d/zBTYja1ONLCvo4Y3piaiW3fp98HxO6KwgM1KATBW70UDDJwmUhaGT q9RP0ceKz+PGb1imnnuT/pnG13mw7f2JCo7xV7ifAh9H2PerUqIM+RBM76XvAxbaNCwZTN BpBMT3MCcm44+9Lm2WPMSyWwuUQJBXY= X-MC-Unique: FfEJniDiP4C3YyKyPSeJaw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680881596; x=1683473596; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rMGB44GjwTSeWHp8nz33XjPowAu3Zq2W6k1C8KD5A/0=; b=iWCaj4t/kmdDGI8Sr0Ycv9/N82j48UzR98mit+7u7yYvXF6M8gvvwYPK+bFkYInaoL 5Bs/OZT23ih7kxPApUpCjQIQlT/14zfJ+TaosDRDR1Apt7WqGMMR9oBpcwc9nqjnJCPA qYqjor0sHHZ68/0E2LvilpJc3tZR5R/qnuGQl7ov6orfRf5yyul5+u8RoJuj1CxgIbRA lyQ0sxCQcdGnNKk05SmzHkn8EeOZHC8j82i8ZxxOlfWN3oQmB7tbUdZoIIi0fq/7JuxG 9kv9e1U3/EY9hkWQP9y7JrjPTLZykaiRttEA7G4LswBzC2jtrxy98pMNd760TzY1+ZIU t9Eg== X-Gm-Message-State: AAQBX9dtPyv6MAHrMMqUpn0LBVxxiwC4RKj5PFzcPIr0AqmV1rur7BBj +Xp4PbHm1DcbaNjy2ckaTjMDbzH7kHTJs2FYwDWxMTVTaGJ17jhMo2IRgowpyQgYBRZv7VDsSR7 5yGDd+64Pt5y+bgpyVZHMRnUDXhJLk0mV9DPTkm8oiEKHU/fIfwNWwBGlQ1Sjlk8YGcbhuOO+d7 U= X-Received: by 2002:a7b:c302:0:b0:3ea:f6c4:305e with SMTP id k2-20020a7bc302000000b003eaf6c4305emr1623480wmj.38.1680881596693; Fri, 07 Apr 2023 08:33:16 -0700 (PDT) X-Google-Smtp-Source: AKy350aT84d1hm9VG8ZVyTk5BMbbmOOrk9y6/sdBSZCkx4/ZHrdp24bc2OE10LVNbsUfR3vTsh5zEQ== X-Received: by 2002:a7b:c302:0:b0:3ea:f6c4:305e with SMTP id k2-20020a7bc302000000b003eaf6c4305emr1623468wmj.38.1680881596483; Fri, 07 Apr 2023 08:33:16 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, kwolf@redhat.com, qemu-block@nongnu.org, hreitz@redhat.com Subject: [PATCH 6/8] block-backend: inline bdrv_co_get_geometry Date: Fri, 7 Apr 2023 17:33:01 +0200 Message-Id: <20230407153303.391121-7-pbonzini@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230407153303.391121-1-pbonzini@redhat.com> References: <20230407153303.391121-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1680881705224100009 Content-Type: text/plain; charset="utf-8" bdrv_co_get_geometry is only used in blk_co_get_geometry. Inline it in there, to reduce the number of wrappers for bs->total_sectors. Signed-off-by: Paolo Bonzini Reviewed-by: Eric Blake --- block.c | 10 ---------- block/block-backend.c | 8 ++++++-- include/block/block-io.h | 3 --- 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/block.c b/block.c index 9de50ac7c811..dbbc8de30c24 100644 --- a/block.c +++ b/block.c @@ -5879,16 +5879,6 @@ int64_t coroutine_fn bdrv_co_getlength(BlockDriverSt= ate *bs) return ret * BDRV_SECTOR_SIZE; } =20 -/* return 0 as number of sectors if no device present or error */ -void coroutine_fn bdrv_co_get_geometry(BlockDriverState *bs, - uint64_t *nb_sectors_ptr) -{ - int64_t nb_sectors =3D bdrv_co_nb_sectors(bs); - IO_CODE(); - - *nb_sectors_ptr =3D nb_sectors < 0 ? 0 : nb_sectors; -} - bool bdrv_is_sg(BlockDriverState *bs) { IO_CODE(); diff --git a/block/block-backend.c b/block/block-backend.c index 7d331d93ebbc..f159cc51d264 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -1627,16 +1627,20 @@ int64_t coroutine_fn blk_co_getlength(BlockBackend = *blk) return bdrv_co_getlength(blk_bs(blk)); } =20 +/* return 0 as number of sectors if no device present or error */ void coroutine_fn blk_co_get_geometry(BlockBackend *blk, uint64_t *nb_sectors_ptr) { + BlockDriverState *bs =3D blk_bs(blk); + IO_CODE(); GRAPH_RDLOCK_GUARD(); =20 - if (!blk_bs(blk)) { + if (!bs) { *nb_sectors_ptr =3D 0; } else { - bdrv_co_get_geometry(blk_bs(blk), nb_sectors_ptr); + int64_t nb_sectors =3D bdrv_co_nb_sectors(bs); + *nb_sectors_ptr =3D nb_sectors < 0 ? 0 : nb_sectors; } } =20 diff --git a/include/block/block-io.h b/include/block/block-io.h index dbc034b7288e..9e2248a295a6 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -90,9 +90,6 @@ int64_t co_wrapper bdrv_get_allocated_file_size(BlockDriv= erState *bs); BlockMeasureInfo *bdrv_measure(BlockDriver *drv, QemuOpts *opts, BlockDriverState *in_bs, Error **errp); =20 -void coroutine_fn GRAPH_RDLOCK -bdrv_co_get_geometry(BlockDriverState *bs, uint64_t *nb_sectors_ptr); - int coroutine_fn GRAPH_RDLOCK bdrv_co_delete_file(BlockDriverState *bs, Error **errp); =20 --=20 2.39.2 From nobody Tue May 21 05:37:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1680881668; cv=none; d=zohomail.com; s=zohoarc; b=d5VwJ1ywwQtBHRPxCpMM8EhC0+EPxxyyE6my5AV43z1orGrz18JzYYVEfbg9UKWWFJdry5fGgosrHwwgEEkWAnZHxs60Ubsd7e9faXUHP3zDowdoe5Tab9iKqPy9/CgK2B0/BkpQEU1WYTFwTx39l+fy2Wsj+OFKv6sIoJVw3/4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1680881668; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=dLCvIxboMWYDOjV9oBM41OkmrCZ9mwtLw9wyeDaVzcs=; b=UtjHTqBGNsycea3Wzlr7SPn6FvWopMSdKnzLHCvQUnPHfKfi77imrkSVtXR6mAxo4BmpDYZmGDfn8JrHxkKR66y+vCpKbhecdBJ2p8XxEpO1lOkUCitGMxshkrLfXCfEyuZbFcuqrDERfRQiD1HihLJCukRGqHQCDUsS/73Txa8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1680881668342647.8754352570448; Fri, 7 Apr 2023 08:34:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pko5e-0007ib-01; Fri, 07 Apr 2023 11:33:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5c-0007hT-6u for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:24 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5Z-0003oN-Qa for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:23 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-607-cFT-Jx39NRWqRWmY-vPabg-1; Fri, 07 Apr 2023 11:33:19 -0400 Received: by mail-wm1-f71.google.com with SMTP id m7-20020a05600c4f4700b003ee7e120bdfso19252473wmq.6 for ; Fri, 07 Apr 2023 08:33:19 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:9af8:e5f5:7516:fa89]) by smtp.gmail.com with ESMTPSA id f8-20020a05600c154800b003f034c76e85sm8948337wmg.38.2023.04.07.08.33.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 08:33:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680881601; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dLCvIxboMWYDOjV9oBM41OkmrCZ9mwtLw9wyeDaVzcs=; b=BTCFZYFrBqz/LICnAsoa4P8qOFkVv5DAJLzUBX/1mByj3tGahQncTvN7rq/sj98JKBKbGE B62on3S/ZeNprbcxwQvQ3VE/k1ihllRMPT+8xzgISZ8zxBxQ0xLk7SZvZH5Z4mcotwaEmR Gc63bY0ubIrgFrPoYC+neyaZqmIx8Og= X-MC-Unique: cFT-Jx39NRWqRWmY-vPabg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680881598; x=1683473598; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dLCvIxboMWYDOjV9oBM41OkmrCZ9mwtLw9wyeDaVzcs=; b=GniVe42qikJlWYOh8TwriilTYlrFFnjMfQ7jlqW4cNQ/7FhWtcIh+FK3KSbvRMxFyq DLGktkPRbZdCxFfDBhgOTQD3h28Hk9e07Jx1M3oEopBy1CWhuWI/oJ7Px3re3H+57Rtt c6Rv2w0oqCa2/wwFwsldd4BKug384RJbqfI06k7UGsY5grKkhb+bD55SMNnNtACbwXZP uDF6711vbKUmwcGwn9a1hQUf17MKnME8UnjoRr3DiKSOFRqImaIu4RWZshA5v4zhO9IG IKtZ4EqiGkMjrElwr0sumPXsEThnhFVW91YqeOpP/2PzQ4zZtDDRQ59YpFpY35yNXWPt y5ug== X-Gm-Message-State: AAQBX9dIGUbZ4IIsdHuqKcMU44j4BHTVSdTIwmstmqzQBLm8+DvBPVpz nrcptGArYp+AXZqysg71GeLM8aourlbUij111blavRWs563mOSc3ugcWO8C+x3L71IOIJcigu4m JBJtRXtOoO7wWnj5RHDi+1i9TDAwBv9w9jFKL9AN3a7QyK/vp9vaWtXYwlV2XqECMsnryndbiLw w= X-Received: by 2002:a1c:6a06:0:b0:3ed:ff92:dd2a with SMTP id f6-20020a1c6a06000000b003edff92dd2amr1574221wmc.12.1680881598342; Fri, 07 Apr 2023 08:33:18 -0700 (PDT) X-Google-Smtp-Source: AKy350a64ZRFCDb3zSLp4jnLJwj2gtdj1dbz/UH2gWbDPRQDg19MXrRu/2ajMVy3qoOgq8NIVv4hSw== X-Received: by 2002:a1c:6a06:0:b0:3ed:ff92:dd2a with SMTP id f6-20020a1c6a06000000b003edff92dd2amr1574206wmc.12.1680881598093; Fri, 07 Apr 2023 08:33:18 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, kwolf@redhat.com, qemu-block@nongnu.org, hreitz@redhat.com Subject: [PATCH 7/8] block-backend: ignore inserted state in blk_co_nb_sectors Date: Fri, 7 Apr 2023 17:33:02 +0200 Message-Id: <20230407153303.391121-8-pbonzini@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230407153303.391121-1-pbonzini@redhat.com> References: <20230407153303.391121-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1680881668809100001 Content-Type: text/plain; charset="utf-8" All callers of blk_co_nb_sectors (and blk_nb_sectors) are able to handle a non-inserted CD-ROM as a zero-length file, they do not need to raise an error. Not using blk_co_is_available() aligns the function with blk_co_get_geometry(), which becomes a simple wrapper for blk_co_nb_sectors(). It will also make it possible to skip the creation of a coroutine in the (common) case where bs->bl.has_variable_length is false. Signed-off-by: Paolo Bonzini Reviewed-by: Eric Blake --- block/block-backend.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/block/block-backend.c b/block/block-backend.c index f159cc51d264..d08e949799ee 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -1627,9 +1627,7 @@ int64_t coroutine_fn blk_co_getlength(BlockBackend *b= lk) return bdrv_co_getlength(blk_bs(blk)); } =20 -/* return 0 as number of sectors if no device present or error */ -void coroutine_fn blk_co_get_geometry(BlockBackend *blk, - uint64_t *nb_sectors_ptr) +int64_t coroutine_fn blk_co_nb_sectors(BlockBackend *blk) { BlockDriverState *bs =3D blk_bs(blk); =20 @@ -1637,23 +1635,18 @@ void coroutine_fn blk_co_get_geometry(BlockBackend = *blk, GRAPH_RDLOCK_GUARD(); =20 if (!bs) { - *nb_sectors_ptr =3D 0; + return -ENOMEDIUM; } else { - int64_t nb_sectors =3D bdrv_co_nb_sectors(bs); - *nb_sectors_ptr =3D nb_sectors < 0 ? 0 : nb_sectors; + return bdrv_co_nb_sectors(bs); } } =20 -int64_t coroutine_fn blk_co_nb_sectors(BlockBackend *blk) +/* return 0 as number of sectors if no device present or error */ +void coroutine_fn blk_co_get_geometry(BlockBackend *blk, + uint64_t *nb_sectors_ptr) { - IO_CODE(); - GRAPH_RDLOCK_GUARD(); - - if (!blk_co_is_available(blk)) { - return -ENOMEDIUM; - } - - return bdrv_co_nb_sectors(blk_bs(blk)); + int64_t ret =3D blk_co_nb_sectors(blk); + *nb_sectors_ptr =3D ret < 0 ? 0 : ret; } =20 BlockAIOCB *blk_aio_preadv(BlockBackend *blk, int64_t offset, --=20 2.39.2 From nobody Tue May 21 05:37:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1680881703; cv=none; d=zohomail.com; s=zohoarc; b=cfleKTKluS1/Z612YZ+s56x6EQWYuVYcIKPygx2eFpE0uTVqIrr/FKHNchmhX/tXggIoLo2nkAZbcvgsppNIhqtutwt0mVvA/XjEAE/IzYGoerSCeUs1BG+83fKlJ8lQ1rQIxcNB3VUi2vmBamzyLvrYl0Sms708OMxXq8Fj124= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1680881703; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=svRGxi9rNMfS0EMcrewTPayf3gkwjgF3u0W1ESXi1b8=; b=Sfi3g6HU3ehIYdcj162Vmz9Rc4FGgnLUiS+9WnPC7RKzkt73J4RsgNwfGasFQcUHULulNwrfXUoNhL5ZNAzBzNXNUKN8h905U/TgtQOrJzTm13eYnpE1B40FDiY//hQsVtfkPhFzlWfLGW/0xRk2vspPgkKn8D940nIFl8y1uO4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1680881703370552.4559445359594; Fri, 7 Apr 2023 08:35:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pko5f-0007jJ-Dp; Fri, 07 Apr 2023 11:33:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5d-0007i5-Hd for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:25 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pko5b-0003r4-JE for qemu-devel@nongnu.org; Fri, 07 Apr 2023 11:33:25 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-103-PQ93GlX3NMG8fmE1dOARCA-1; Fri, 07 Apr 2023 11:33:21 -0400 Received: by mail-wm1-f72.google.com with SMTP id u12-20020a05600c19cc00b003f07be0e96bso629534wmq.7 for ; Fri, 07 Apr 2023 08:33:21 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:9af8:e5f5:7516:fa89]) by smtp.gmail.com with ESMTPSA id z16-20020a5d4c90000000b002cf1c435afcsm4792154wrs.11.2023.04.07.08.33.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 08:33:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680881602; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=svRGxi9rNMfS0EMcrewTPayf3gkwjgF3u0W1ESXi1b8=; b=YOHeafxarxB5+4esx8ZVF90nAqNWNHNcSgmRvNxXB9q81K9efLA0uCIIo1H1O0cCWJeWbZ qXdWwpJjWgrV+6ibFqKAypViYH0CvOrnHXCLrkpMjsrwvk+RoKTTKp4OwS3VXwW1FWi2hj EThFHD8u3u9CiwyxWG593dI6BwdH35g= X-MC-Unique: PQ93GlX3NMG8fmE1dOARCA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680881600; x=1683473600; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=svRGxi9rNMfS0EMcrewTPayf3gkwjgF3u0W1ESXi1b8=; b=rHVrgukAjZMU0C27w5c5Eh1xAoGaCCfaJwLa9+AAqw7LThYNT+vBafORm8WbrM58G/ nMWf98FVeoDW2vgz7AwvDtD3uD+uO4CJk3RXlwDxvHWWvAHO+OzOiWS8FZXQ+l31KLeT qc3vN8X/C9eLrtjoAB9NODf+WTy6DdnAAKDf5gKx6ywp8ossePoranhT/k+flah4f+Zv Pop8eXCsxY6MBbptA5a8vNZB+ibT8S/k0jKzKbkLvq+G9kE/FmCOZUO406Jl/PQV+wro 7B2mZffeCY0sb79l2c4xdGj9Ji/Y7FKYWpcM5xT7AWJjGGCExhi2pUnQabXUhdCxwFJo si2g== X-Gm-Message-State: AAQBX9ecZBOa96agUJvjSwhatmZkUh91k/9WBJJF/MFkARgsIyaoxieV f+bqJjKJVnMqNJ/3ZjL/L4nuKh1bvRfzqFQGOeHAmexFo0OgTfqiN8UBX9ohBZKm5PAXNzox1pi BwNsk9N1wOCqRbvAi16FcIW6glzeMRKcaMxKSF4XNAqQs9nrHKA4lwy7ZDjQ5qLDD050fm/nK9W 0= X-Received: by 2002:a5d:4fca:0:b0:2ef:18fa:47ca with SMTP id h10-20020a5d4fca000000b002ef18fa47camr1555032wrw.47.1680881599980; Fri, 07 Apr 2023 08:33:19 -0700 (PDT) X-Google-Smtp-Source: AKy350ZP1fO3IB8zm/6xTxHnhdCPbbdOoUoGJGbEeY3SnsptQqSjnvIcV/gXKsV3kOKQHCQDFINmiw== X-Received: by 2002:a5d:4fca:0:b0:2ef:18fa:47ca with SMTP id h10-20020a5d4fca000000b002ef18fa47camr1555015wrw.47.1680881599589; Fri, 07 Apr 2023 08:33:19 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, kwolf@redhat.com, qemu-block@nongnu.org, hreitz@redhat.com Subject: [PATCH 8/8] block, block-backend: write some hot coroutine wrappers by hand Date: Fri, 7 Apr 2023 17:33:03 +0200 Message-Id: <20230407153303.391121-9-pbonzini@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230407153303.391121-1-pbonzini@redhat.com> References: <20230407153303.391121-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1680881704941100006 Content-Type: text/plain; charset="utf-8" The introduction of the graph lock is causing blk_get_geometry, a hot funct= ion used in the I/O path, to create a coroutine. However, the only part that r= eally needs to run in coroutine context is the call to bdrv_co_refresh_total_sect= ors, which in turn only happens in the rare case of host CD-ROM devices. So, write by hand the three wrappers on the path from blk_co_get_geometry to bdrv_co_refresh_total_sectors, so that the coroutine wrapper is only created if bdrv_nb_sectors actually calls bdrv_refresh_total_sectors. Reported-by: Stefan Hajnoczi Signed-off-by: Paolo Bonzini --- block.c | 22 ++++++++++++++++++++++ block/block-backend.c | 27 +++++++++++++++++++++++++++ =20 include/sysemu/block-backend-io.h | 5 ++--- 4 files changed, 52 insertions(+), 4 deletions(-) diff --git a/block.c b/block.c index dbbc8de30c24..3390efd18cf6 100644 --- a/block.c +++ b/block.c @@ -5859,6 +5859,28 @@ int64_t coroutine_fn bdrv_co_nb_sectors(BlockDriverS= tate *bs) return bs->total_sectors; } =20 +/* + * This wrapper is written by hand because this function is in the hot I/O= path, + * via blk_get_geometry. + */ +int64_t coroutine_mixed_fn bdrv_nb_sectors(BlockDriverState *bs) +{ + BlockDriver *drv =3D bs->drv; + IO_CODE(); + + if (!drv) + return -ENOMEDIUM; + + if (!bs->bl.has_variable_length) { + int ret =3D bdrv_refresh_total_sectors(bs, bs->total_sectors); + if (ret < 0) { + return ret; + } + } + + return bs->total_sectors; +} + /** * Return length in bytes on success, -errno on error. * The length is always a multiple of BDRV_SECTOR_SIZE. diff --git a/block/block-backend.c b/block/block-backend.c index d08e949799ee..a9767466af69 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -1641,6 +1641,23 @@ int64_t coroutine_fn blk_co_nb_sectors(BlockBackend = *blk) } } =20 +/* + * This wrapper is written by hand because this function is in the hot I/O= path, + * via blk_get_geometry. + */ +int64_t coroutine_mixed_fn blk_nb_sectors(BlockBackend *blk) +{ + BlockDriverState *bs =3D blk_bs(blk); + + IO_CODE(); + + if (!bs) { + return -ENOMEDIUM; + } else { + return bdrv_nb_sectors(blk_bs(blk)); + } +} + /* return 0 as number of sectors if no device present or error */ void coroutine_fn blk_co_get_geometry(BlockBackend *blk, uint64_t *nb_sectors_ptr) @@ -1649,6 +1666,16 @@ void coroutine_fn blk_co_get_geometry(BlockBackend *= blk, *nb_sectors_ptr =3D ret < 0 ? 0 : ret; } =20 +/* + * This wrapper is written by hand because this function is in the hot I/O= path. + */ +void coroutine_mixed_fn blk_get_geometry(BlockBackend *blk, + uint64_t *nb_sectors_ptr) +{ + int64_t ret =3D blk_nb_sectors(blk); + *nb_sectors_ptr =3D ret < 0 ? 0 : ret; +} + BlockAIOCB *blk_aio_preadv(BlockBackend *blk, int64_t offset, QEMUIOVector *qiov, BdrvRequestFlags flags, BlockCompletionFunc *cb, void *opaque) diff --git a/include/block/block-io.h b/include/block/block-io.h index 9e2248a295a6..5dab88521d02 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -79,7 +79,7 @@ bdrv_co_truncate(BdrvChild *child, int64_t offset, bool e= xact, PreallocMode prealloc, BdrvRequestFlags flags, Error **er= rp); =20 int64_t coroutine_fn GRAPH_RDLOCK bdrv_co_nb_sectors(BlockDriverState *bs); -int64_t co_wrapper_mixed_bdrv_rdlock bdrv_nb_sectors(BlockDriverState *bs); +int64_t coroutine_mixed_fn bdrv_nb_sectors(BlockDriverState *bs); =20 int64_t coroutine_fn GRAPH_RDLOCK bdrv_co_getlength(BlockDriverState *bs); int64_t co_wrapper_mixed_bdrv_rdlock bdrv_getlength(BlockDriverState *bs); diff --git a/include/sysemu/block-backend-io.h b/include/sysemu/block-backe= nd-io.h index 9736346d7940..851a44de9642 100644 --- a/include/sysemu/block-backend-io.h +++ b/include/sysemu/block-backend-io.h @@ -72,11 +72,10 @@ int64_t co_wrapper_mixed blk_getlength(BlockBackend *bl= k); =20 void coroutine_fn blk_co_get_geometry(BlockBackend *blk, uint64_t *nb_sectors_ptr); -void co_wrapper_mixed blk_get_geometry(BlockBackend *blk, - uint64_t *nb_sectors_ptr); +void blk_get_geometry(BlockBackend *blk, uint64_t *nb_sectors_ptr); =20 int64_t coroutine_fn blk_co_nb_sectors(BlockBackend *blk); -int64_t co_wrapper_mixed blk_nb_sectors(BlockBackend *blk); +int64_t blk_nb_sectors(BlockBackend *blk); =20 void *blk_try_blockalign(BlockBackend *blk, size_t size); void *blk_blockalign(BlockBackend *blk, size_t size); --=20 2.39.2