From nobody Sun Jul 26 10:07:45 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1784906715; cv=none; d=zohomail.com; s=zohoarc; b=HlSSZXE3KoWzy208LiZZeRBuZecxoBjZ/bguzN5taR1ESOgVoih53mOksygIcjUaApgkleZs12gEh47OR7HfC9Vbv7oyFrwV+zvEtJLa0cGcyHPhFkyn9iDYa8Ye8JijQ+YIK+pudP7/uMb1npWCEn1wPk57D4AnRjGcIm2TR5A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784906715; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7N11i6OZVIXLBMkIPP1QBIvrvvjyEy7GoTzD7/AppxA=; b=Cv5eNqxuNJD3H4G5pxHzG5EK782OVBc7121VJpiDTvTIVGSn650MrDM/zwtIZ9JreYgyrKxYWhDJHcg26TOJuBVg6QdTh9VEzUZ40I9Ms78AngwpqjfNd45yXQE+mxkJwzVVgynJKll/7qJ9eUjG45OhOSRRP+ak9Yw2vfBpKvI= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784906714995600.4830499855066; Fri, 24 Jul 2026 08:25:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wnHlr-00051H-PT; Fri, 24 Jul 2026 11:25:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wnHlp-0004r5-87 for qemu-devel@nongnu.org; Fri, 24 Jul 2026 11:25:05 -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 1wnHlm-0008T1-Hq for qemu-devel@nongnu.org; Fri, 24 Jul 2026 11:25:04 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-531-A0U3R6nHPGmUgMB35pPqAg-1; Fri, 24 Jul 2026 11:23:24 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-476608a9fefso502859f8f.1 for ; Fri, 24 Jul 2026 08:23:24 -0700 (PDT) Received: from localhost (p200300cfd7075d8bc03b74903e90fa9c.dip0.t-ipconnect.de. [2003:cf:d707:5d8b:c03b:7490:3e90:fa9c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f85b9a6d7sm26167641f8f.2.2026.07.24.08.23.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 08:23:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1784906701; 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=7N11i6OZVIXLBMkIPP1QBIvrvvjyEy7GoTzD7/AppxA=; b=McnxVXxTAHz1G/mT8fU9s4MzIBAb5cza5DOwMCkqQQ/YOiOkplyQ1wAxcXYH4cMDtNs60Z ZJ+i5hi25pcZSN7wTlVJd6WCpzQXAbwD+i00x0HMMDaskR8g84N7wCj+aptEcLxE/YK2al yB4BpR+9v6g2k2qa7u8n48ndMhmfb44= X-MC-Unique: A0U3R6nHPGmUgMB35pPqAg-1 X-Mimecast-MFC-AGG-ID: A0U3R6nHPGmUgMB35pPqAg_1784906603 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1784906603; x=1785511403; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=7N11i6OZVIXLBMkIPP1QBIvrvvjyEy7GoTzD7/AppxA=; b=fbTiqT8khQW6kuGwEA69sENxlzw/ZzUchHUwjzgsylHJ4Qbs0gF4vf38RKWmfdVwmv Zo5OM80Nf/7pUmOaZOhQaBEqIC5wZ1rrp0JKucSar6AmHKo7DajGICFVVA1ykBV5wNPg Fe8yMB1HJ67mDwFJ8wqFY3//Tv6p4EezM7jwkVMBMJPEA1iM4mDx81GNwxGjAFWBNAmS rlSB3YUM302pzTv3GIJnvR3flPc6HPl126w6cuBHqS0uK5oy+Bz8IGWa9tzadpgn1UXF rgB9YqYk03AY0kYGKhy0X/UjappF0KugGwIX0b4Iwtovs266FW4zSLze5Kj34xolmDLw 6AGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784906603; x=1785511403; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=7N11i6OZVIXLBMkIPP1QBIvrvvjyEy7GoTzD7/AppxA=; b=IRBbuvst3yl3x4ps/VW6ofPMU1GpG3OtxzfLGDFrJp1M0vG1CnYGmsAmZCxO6/bYPk EtXB3FvdUuHrg7KnFhxoYpBXIsGZo/7jAY+h9f1S/uX+aD20lHNLpfAccFIu5LgbEZuD ktKMkWn2irn5gGIDXDbE1U5gvyCA0o/zwlMyw/r+OXwRsWuR+mgssjLjxgQ2HoAZmcr6 TUlXqyVaXq9oSCrNf7FgagBrAgCyAdIQTV59vjOPe/cyztd3szG1xreh0RaJQQwKfTHX sZLaMSq79fEHhuknlCdiwPoOccHG7V4HwFg3DiKqyS5kDyK2tvrXI5vlLPHh7eqOonQ8 gs/w== X-Gm-Message-State: AOJu0YzT+B4kNlSPC9CYtXGZVrufvPAANU4JmdrviVQ0GDb8gWgtq2Sm hrMXvJEDb+B9jQ2CPesxhs6reX/dmc2K7VhwLgkGSnvf1Pc6xRrlHYsggNtIQJwbIrIiKMHKpn5 yPm0tgeFf6dPWC38/EsZGOVaqEhaw9nBhxxR8uz+TlOwZ0hKNqRI4X7iz X-Gm-Gg: AR+sD121mscD+sJfswRMIjat1FYqHLlyn6d9VdvMUTM4HnyO9EYHQTPS7jn+qYXksXU mN6XH2UWMwLfJT6NiRG8dNrrz2TNlTuL198FPwt6Y7LWHf4p5Oj6rKlMIxEvljoPk2LGkKTpzvA wpLEJaXHOo0tq6Ad943wY++Fb7rgRetRT7A1uaca19xZdaTXxu+Xl+N4QJT5m1tXMPlurGakaai s4ut0/pDnW4QbkWM49SEZFSKAinmq6DmByQgXg04xVBeswWGPPaFTVTuWoCeDa8W7wuOFIqyahg vnFH0em1oNt0RJ/UI9y83Rc0ZiswWkCRNyiK+WKgzoB5X/C/Kk0OVTNbBKpOKSX0CgThiWLKSzT FPa34MwfgQl+Tg/7fMPk8XrFlKJnzO1wuZBx6q6fSQ+zpvrjGgU+yPYo5WRY= X-Received: by 2002:a05:6000:615:b0:47f:97f7:87dd with SMTP id ffacd0b85a97d-47f9d0f5e0fmr994153f8f.25.1784906603349; Fri, 24 Jul 2026 08:23:23 -0700 (PDT) X-Received: by 2002:a05:6000:615:b0:47f:97f7:87dd with SMTP id ffacd0b85a97d-47f9d0f5e0fmr994101f8f.25.1784906602885; Fri, 24 Jul 2026 08:23:22 -0700 (PDT) From: Hanna Czenczek To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, Hanna Czenczek , Kevin Wolf , Stefan Hajnoczi , "Michael S . Tsirkin" , Keith Busch , Klaus Jensen , Jesper Devantier , John Snow , Paolo Bonzini , Fam Zheng Subject: [PATCH 1/6] hw/virtio-blk: Account discard operations Date: Fri, 24 Jul 2026 17:23:10 +0200 Message-ID: <20260724152315.234183-2-hreitz@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260724152315.234183-1-hreitz@redhat.com> References: <20260724152315.234183-1-hreitz@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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=hreitz@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.419, 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_PASS=-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: qemu development 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: 1784906718681158500 Content-Type: text/plain; charset="utf-8" The acct_failed argument to virtio_blk_handle_rw_error() tells whether there is accounting for this operation or not. The only operation for which there is none is discarding, which seems to be because at the time of the introducing commit 37b06f8d46f ("virtio-blk: add DISCARD and WRITE_ZEROES features"), BlockAcctType did not yet have a BLOCK_ACCT_UNMAP variant. It does have that now, though, so we may as well track those discard operations with it, and can thus remove the acct_failed parameter. Signed-off-by: Hanna Czenczek --- hw/block/virtio-blk.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index 6b92066aff4..56bfe1840c4 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -69,7 +69,7 @@ void virtio_blk_req_complete(VirtIOBlockReq *req, unsigne= d char status) } =20 static int virtio_blk_handle_rw_error(VirtIOBlockReq *req, int error, - bool is_read, bool acct_failed) + bool is_read) { VirtIOBlock *s =3D req->dev; BlockErrorAction action =3D blk_get_error_action(s->blk, is_read, erro= r); @@ -85,9 +85,7 @@ static int virtio_blk_handle_rw_error(VirtIOBlockReq *req= , int error, } } else if (action =3D=3D BLOCK_ERROR_ACTION_REPORT) { virtio_blk_req_complete(req, VIRTIO_BLK_S_IOERR); - if (acct_failed) { - block_acct_failed(blk_get_stats(s->blk), &req->acct); - } + block_acct_failed(blk_get_stats(s->blk), &req->acct); g_free(req); } =20 @@ -124,7 +122,7 @@ static void virtio_blk_rw_complete(void *opaque, int re= t) * the memory until the request is completed (which will * happen on the other side of the migration). */ - if (virtio_blk_handle_rw_error(req, -ret, is_read, true)) { + if (virtio_blk_handle_rw_error(req, -ret, is_read)) { continue; } } @@ -140,7 +138,7 @@ static void virtio_blk_flush_complete(void *opaque, int= ret) VirtIOBlockReq *req =3D opaque; VirtIOBlock *s =3D req->dev; =20 - if (ret && virtio_blk_handle_rw_error(req, -ret, 0, true)) { + if (ret && virtio_blk_handle_rw_error(req, -ret, 0)) { return; } =20 @@ -153,17 +151,13 @@ static void virtio_blk_discard_write_zeroes_complete(= void *opaque, int ret) { VirtIOBlockReq *req =3D opaque; VirtIOBlock *s =3D req->dev; - bool is_write_zeroes =3D (virtio_ldl_p(VIRTIO_DEVICE(s), &req->out.typ= e) & - ~VIRTIO_BLK_T_BARRIER) =3D=3D VIRTIO_BLK_T_WRI= TE_ZEROES; =20 - if (ret && virtio_blk_handle_rw_error(req, -ret, false, is_write_zeroe= s)) { + if (ret && virtio_blk_handle_rw_error(req, -ret, false)) { return; } =20 virtio_blk_req_complete(req, VIRTIO_BLK_S_OK); - if (is_write_zeroes) { - block_acct_done(blk_get_stats(s->blk), &req->acct); - } + block_acct_done(blk_get_stats(s->blk), &req->acct); g_free(req); } =20 @@ -443,6 +437,9 @@ static uint8_t virtio_blk_handle_discard_write_zeroes(V= irtIOBlockReq *req, goto err; } =20 + block_acct_start(blk_get_stats(s->blk), &req->acct, bytes, + BLOCK_ACCT_UNMAP); + blk_aio_pdiscard(s->blk, sector << BDRV_SECTOR_BITS, bytes, virtio_blk_discard_write_zeroes_complete, req); } @@ -450,9 +447,8 @@ static uint8_t virtio_blk_handle_discard_write_zeroes(V= irtIOBlockReq *req, return VIRTIO_BLK_S_OK; =20 err: - if (is_write_zeroes) { - block_acct_invalid(blk_get_stats(s->blk), BLOCK_ACCT_WRITE); - } + block_acct_invalid(blk_get_stats(s->blk), + is_write_zeroes ? BLOCK_ACCT_WRITE : BLOCK_ACCT_UNM= AP); return err_status; } =20 --=20 2.55.0 From nobody Sun Jul 26 10:07:45 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1784908500; cv=none; d=zohomail.com; s=zohoarc; b=CfvjmlQSqwQpJlqDhRaEHzjntm7kQ7gkcnxlpJpI8KVPqOYpJIqn0Pq2ZrXLt2pwmzYXcLWN425n3Vq3nQTWm47seGThYjoZg/ZQcb61EAhlmMI2G8CekQAcHA+2yRPRFz9kGdzSu8BpqQxN0FUru6OpMlZ5Ym11NFelPjbQYIs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784908500; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rpBLduXIbVgc1kr/XPshxc9Bgw6om1b+VeMiROGQBGk=; b=OgXvxitC6FrwWkDp3Zjnr5ZBNTwIztCFWs98hzcpIDAyNFhQTWlfRnFZI9Yg3VVwlNbqhZ4hEw0g1Zql2FTzKzI0W+tjN7oTsc+vSOQhJaSLgzAM4v4QBryrPA6s4cIRhdow3nURG7KpYEDb3XtrRwsUl2Q1FoK4jWPTLAmLR44= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17849085006651017.8216985259086; Fri, 24 Jul 2026 08:55:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wnIEM-0005Yq-DC; Fri, 24 Jul 2026 11:54:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wnIEH-0005Xt-9s for qemu-devel@nongnu.org; Fri, 24 Jul 2026 11:54:29 -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 1wnIEF-00053Q-49 for qemu-devel@nongnu.org; Fri, 24 Jul 2026 11:54:29 -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-511-la054TKyP66_Xx1oPvo55w-1; Fri, 24 Jul 2026 11:23:26 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4955edc851aso3736115e9.2 for ; Fri, 24 Jul 2026 08:23:26 -0700 (PDT) Received: from localhost (p200300cfd7075d8bc03b74903e90fa9c.dip0.t-ipconnect.de. [2003:cf:d707:5d8b:c03b:7490:3e90:fa9c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f85b9a6d7sm26167782f8f.2.2026.07.24.08.23.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 08:23:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1784908464; 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=rpBLduXIbVgc1kr/XPshxc9Bgw6om1b+VeMiROGQBGk=; b=Hv4+4TciUXqdrIMwhyS0uErPFTjY3ual2chlICsiveL970PZ16W7kBtO7qjOEBDszf/0Bb pu80TVU7pzO1FBv8uOjHBXa5vaHoaXS5SsUavRy27BuVdLzD5I+WaEZecRm7Ap90MxVU6v xFxURkTDaRoQgUxEHF4BN+yc6Vee16w= X-MC-Unique: la054TKyP66_Xx1oPvo55w-1 X-Mimecast-MFC-AGG-ID: la054TKyP66_Xx1oPvo55w_1784906605 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1784906605; x=1785511405; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=rpBLduXIbVgc1kr/XPshxc9Bgw6om1b+VeMiROGQBGk=; b=nDH2RMN15uglLtNwbmecnRD3o9ZcLXknrv6zAxuHCa9LhI0Z3C6GDFjhksY8XyOvX7 NynyudUt4CE1NRJify4bv9bT5R6oHnJclUPQZokaEN70H5TT/MyTCbrnudDzCClsswcE rJCn2nz2zrOSjJvpN1yNBFAhrBasBGh9ruTlZ6sL0R8+aXELQZuZtIohY4/fp65E/WcY GjTIheJ0U3TTDZZfAjnw5Kp9hzR/6x0Pb910VI42TJ046G96PryMEeJ6d6BQuNN9oywl SDgndXz58wzcW3poqjeTcZd88YXloryUAFRscQDdnwTiW+P36FpR6VymE+BsbZUAta4G c9CQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784906605; x=1785511405; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=rpBLduXIbVgc1kr/XPshxc9Bgw6om1b+VeMiROGQBGk=; b=Y3zEQPyPcSHM7FhJJmpDM8IrsxNxMVyN4pvFgy79/HOdSlby0ABaVMlQji9whZF+qS 9C3st1U7UCPrB0xbnMbz3sB/u9Gjg+ATyppF+Pk0mDBEoeHW70vJm6yBFkF+PBIeDJ8C Q7xQdam4aRfuVcYRzysNaQCq2CxbAXdiEyUac/6toHrlSaZFsrf4T3ToKrnW1iZ5kSpr HQjOLv8I2dOvk43cA9oGL5jbNLUDgtZUP/boUAO283UNy9aBVG3ElYz8aaACUsJjAkDi BVlwTZZgSX2a50YLwVQRc/mzyyytmvPrkmvY1mSMAXq24i/ibcMi9y4F5f2qP6M6BEMj BANA== X-Gm-Message-State: AOJu0YyR486ZEZ6PlOUcXoffXhLqzJFntmRQPlajwOCnzE2EuBEAgxrJ RWjeS4/IW82KpjkdISapgh+YIcCAgNEhJg6rlLKvfB6evJ1l0BQp+pqj/ZeIBMkguflquAo25B3 DA2EWKhMP8tSV6LtdP1fVkmBzY/nR6Bj+Cio85l1aNLZIBa/icMQ2ndcWSEGMVPwU X-Gm-Gg: AR+sD12ObpKvSfjg0wm+qlusIZ1lXpjBXCPuQv6Hgc3sw/2Do1dRY+T3TuWwl5sImbP wXvIpvDuQNcGMl2XDujyDy4cF4AfEeGZnBDzEd6GkWEsiWiWS2vwYlXtn/v0sOJqUNz1AdGQSVq vnfKhiuQqArjlXt9LOdMpofQ+IGsDdpxZvbDesUBD/grLoSK4uE7FdQp3n8Paau9Zpv2GyjY+48 338kxR5mC5uyAA5ELUrcmR5i/BXpUUY7FoLT3D/Lm1pgzmZBuwZBF3DlJknjzSgzWVpc3jmz8ed QrBBtDvydN4WFpB8jzV9Stogl7qaTfl5AVVi5a1BhQqCGY1K3a2XHLxBer3VdGXTnpc64Y8Gl9W kC2lrKhQk5OIR8w6S1rJuxVtyqMK7aj7Xs71QXWxxV9gBYSfv/4NfK7WkmCE= X-Received: by 2002:a05:600c:3107:b0:495:6338:1453 with SMTP id 5b1f17b1804b1-49573ca9945mr83365595e9.16.1784906605124; Fri, 24 Jul 2026 08:23:25 -0700 (PDT) X-Received: by 2002:a05:600c:3107:b0:495:6338:1453 with SMTP id 5b1f17b1804b1-49573ca9945mr83365335e9.16.1784906604792; Fri, 24 Jul 2026 08:23:24 -0700 (PDT) From: Hanna Czenczek To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, Hanna Czenczek , Kevin Wolf , Stefan Hajnoczi , "Michael S . Tsirkin" , Keith Busch , Klaus Jensen , Jesper Devantier , John Snow , Paolo Bonzini , Fam Zheng Subject: [PATCH 2/6] hw/virtio-blk: Complete zone-append cookies Date: Fri, 24 Jul 2026 17:23:11 +0200 Message-ID: <20260724152315.234183-3-hreitz@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260724152315.234183-1-hreitz@redhat.com> References: <20260724152315.234183-1-hreitz@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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=hreitz@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.419, 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_PASS=-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: qemu development 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: 1784908502625158500 Content-Type: text/plain; charset="utf-8" virtio_blk_handle_zone_append() starts accounting via block_acct_start(), but this is actually never completed. Do so. Signed-off-by: Hanna Czenczek --- hw/block/virtio-blk.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index 56bfe1840c4..384a5ee3f1c 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -755,7 +755,8 @@ static void virtio_blk_zone_append_complete(void *opaqu= e, int ret) { ZoneCmdData *data =3D opaque; VirtIOBlockReq *req =3D data->req; - VirtIODevice *vdev =3D VIRTIO_DEVICE(req->dev); + VirtIOBlock *s =3D req->dev; + VirtIODevice *vdev =3D VIRTIO_DEVICE(s); int64_t append_sector, n; uint8_t err_status =3D VIRTIO_BLK_S_OK; =20 @@ -778,6 +779,11 @@ static void virtio_blk_zone_append_complete(void *opaq= ue, int ret) =20 out: virtio_blk_req_complete(req, err_status); + if (err_status =3D=3D VIRTIO_BLK_S_OK) { + block_acct_done(blk_get_stats(s->blk), &req->acct); + } else { + block_acct_failed(blk_get_stats(s->blk), &req->acct); + } g_free(req); g_free(data); } --=20 2.55.0 From nobody Sun Jul 26 10:07:45 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1784907064; cv=none; d=zohomail.com; s=zohoarc; b=YjBS2kE73hGLf0qzff20ZFY1W/g+Oba4HMB0uSnggA3AMTHAcxXw5XfzxqmJnq6b7YA1t4bg0ofESkz6woWQbdCorq4ehKuhwIKjy2sjlLrXztPAvVDjIxLCL86r7gjOPu3nVUVJJPVtruWF+LHkw8cvFqH7fxkAJTL9j2pcZQs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784907064; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rLlRZ9KI2JRHj5Nid/esGkgvo4jawCd5AOmkeY0Wn1k=; b=BPX12nE40P9xihyPuePbtu8qN8EejWYg0t8NOOafWqUQ4QQB6nHmPnaSPnyHtIso3tUoNVkaohL0mQB0GX+LBNzL45l3ZDyeel7qqbF9MBJi2QSge0YagPBosK+SaWzHmTB/8TfQnrSPXxKBXeII8XzBaC7Wb6s1svpdEp0gwnQ= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17849070643111012.0339608751276; Fri, 24 Jul 2026 08:31:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wnHqx-0001QK-1O; Fri, 24 Jul 2026 11:30:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wnHqh-0001Oo-Kk for qemu-devel@nongnu.org; Fri, 24 Jul 2026 11:30:09 -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 1wnHqe-0001fl-Hl for qemu-devel@nongnu.org; Fri, 24 Jul 2026 11:30:06 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-101-CGKwaGtTPVKb-B_2SkhmsQ-1; Fri, 24 Jul 2026 11:23:28 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-472c330e555so393144f8f.1 for ; Fri, 24 Jul 2026 08:23:27 -0700 (PDT) Received: from localhost (p200300cfd7075d8bc03b74903e90fa9c.dip0.t-ipconnect.de. [2003:cf:d707:5d8b:c03b:7490:3e90:fa9c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f85b9a596sm25214877f8f.4.2026.07.24.08.23.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 08:23:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1784907003; 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=rLlRZ9KI2JRHj5Nid/esGkgvo4jawCd5AOmkeY0Wn1k=; b=MFhtrCkCnxXOfA2+fDx0jiD820trMPLxGJYyDIMmdipo1KEBXBwVoNLx3QjpYh4AMEtakZ FWHpKy/jIiAG52cfeHMlxHMe0WZ3Igy+8paGfzqVq+njtnBp1poNpXOQgamFL3ibghO3BT Ft0QTYdXiGhIZZX4sySt124wetul5zM= X-MC-Unique: CGKwaGtTPVKb-B_2SkhmsQ-1 X-Mimecast-MFC-AGG-ID: CGKwaGtTPVKb-B_2SkhmsQ_1784906607 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1784906607; x=1785511407; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=rLlRZ9KI2JRHj5Nid/esGkgvo4jawCd5AOmkeY0Wn1k=; b=jFccRBVkrI7x2xd9nA5Dsfd/BBy3m1PyV4oAwsVwRI6l1EdLKVSFk/A0xxQ8TF71xU JhBS4pWcGyPVIG57yrR/Kus+ZEh1N8f3ztYCRr7d1LdOVnHRaneuXx4sTtvfI5JeVHH5 gqRCPBkEVU4jyBJCps6TH6nUBNCyWjShcQFRwnsV1jPSyTsHqC0znwKcTt8IJvUujSy0 Hul24qSmmLTDvMXn1DN+pmYjgU/qM/ueblVYyM5xpSCX9lI6uYitK1+oRU5w0ezo81Bg iIOnCa0pNXUu+OfCwhNt/xC+VPPi/KQRT5OJfAcN5vX3WFb8rmtL83SuTBgA9Tmj/gpP 9okw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784906607; x=1785511407; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=rLlRZ9KI2JRHj5Nid/esGkgvo4jawCd5AOmkeY0Wn1k=; b=Elzhx+2HRVoPW5LJ2dIJAjg6TKvU/b/ClFFqkODfBur/MFNZBuBIjL0CLaALbfIvGU 6uIRnXJbL44FYayRJihqUf/qfRAj4xnRwP+bVgWMroz+5SbZVKLEYcKBNXTggI5eFN/r nWjC6RQdQMpKPjJ5VQntG02WlhRi7yQx8lvOnRxlAR8cL172pEt0rJAZ3C3CJCgSJCbD PCQBU/ZCZaARcijuH/T2dzspY2S1hlNXF8bAw2nZggMij/hm0oin3KPIMO6kmaVzax2w GkkOQSP4UTrw1KAInCb0oxWRpNe2p9E2GhUfWgqpFgomQaCBJKxxhkPzJ4tSCy2HZMOY wD5A== X-Gm-Message-State: AOJu0Yxa9vV7q+VbL3x4ZcOvrMuFNh5U07GjZuJRJRoEEybQQyfSdd/J 9suU7XaBcKo/4TkOE2CvRpfxMaM0IIVohGcgWEO3TudZdu0f2QRiGSyfKDE+OR5h+4klYTi6X3O WpyYu/hVxbx5jODEZzqqJzYu4reSGPTs/Fk1U2Rj7QA05b7bxrF+eXmIk X-Gm-Gg: AR+sD10FkiWaQAArhILg0HumGKVhulb68Lf8ovk2y32SmolNUk9aURQFsRCHcRtsnJ4 CMEQoMgQvjEURIJmeKyNxFMUvn3WfJfOSE6dEGPnIFO3eBsXZFhT3K58XI97x2y3aEHHxAFHrmj VyzXyN/OI9FxP8x+wiUZ2uecasA2zn+EVeKYhCMj3lOCxKEWckIER+MqehYld+phNi8YJCkZoCP DZ7fBynSsz7ArV0iBMXy01JbqrIHGDffkKnRT8pcW4e4jVmk72VDuV7InOq9jpEaVCKLi7EuWa5 uqoQiVWzlGZqoJvkoZJ2hAa9Vkw/dqTdIBDy+0SCz0G6fLsb1hWbbva5ayshj73IvCQiGu326l0 8JBPf87h/NOig/FrVz58+eWfH7qPu7MWvqSjaegqjXyyQbe06ctBquh0pjSU= X-Received: by 2002:a05:6000:455c:b0:47f:91e3:3cc9 with SMTP id ffacd0b85a97d-47f91e33dc2mr7348207f8f.39.1784906606847; Fri, 24 Jul 2026 08:23:26 -0700 (PDT) X-Received: by 2002:a05:6000:455c:b0:47f:91e3:3cc9 with SMTP id ffacd0b85a97d-47f91e33dc2mr7348173f8f.39.1784906606469; Fri, 24 Jul 2026 08:23:26 -0700 (PDT) From: Hanna Czenczek To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, Hanna Czenczek , Kevin Wolf , Stefan Hajnoczi , "Michael S . Tsirkin" , Keith Busch , Klaus Jensen , Jesper Devantier , John Snow , Paolo Bonzini , Fam Zheng Subject: [PATCH 3/6] hw/nvme: Fix block accounting in nvme_copy() Date: Fri, 24 Jul 2026 17:23:12 +0200 Message-ID: <20260724152315.234183-4-hreitz@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260724152315.234183-1-hreitz@redhat.com> References: <20260724152315.234183-1-hreitz@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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=hreitz@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.419, 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_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development 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: 1784907072632158500 Content-Type: text/plain; charset="utf-8" In nvme_copy(), we start accounting for each of the copied ranges, but only end it once (in nvme_copy_done()). We should end it after each read/write operation is done instead, so they are properly accounted for. We should also actually pass the number of bytes we are reading/writing (instead of 0), and probably account for the metadata operations also, as they are block operations we execute. Signed-off-by: Hanna Czenczek --- hw/nvme/ctrl.c | 53 +++++++++++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index a67e1598891..32e78881234 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -2801,8 +2801,6 @@ static const AIOCBInfo nvme_copy_aiocb_info =3D { static void nvme_copy_done(NvmeCopyAIOCB *iocb) { NvmeRequest *req =3D iocb->req; - NvmeNamespace *ns =3D req->ns; - BlockAcctStats *stats =3D blk_get_stats(ns->blkconf.blk); =20 if (iocb->idx !=3D iocb->nr) { req->cqe.result =3D cpu_to_le32(iocb->idx); @@ -2811,14 +2809,6 @@ static void nvme_copy_done(NvmeCopyAIOCB *iocb) qemu_iovec_destroy(&iocb->iov); g_free(iocb->bounce); =20 - if (iocb->ret < 0) { - block_acct_failed(stats, &iocb->acct.read); - block_acct_failed(stats, &iocb->acct.write); - } else { - block_acct_done(stats, &iocb->acct.read); - block_acct_done(stats, &iocb->acct.write); - } - iocb->common.cb(iocb->common.opaque, iocb->ret); qemu_aio_unref(iocb); } @@ -2949,6 +2939,7 @@ static void nvme_copy_out_completed_cb(void *opaque, = int ret) NvmeCopyAIOCB *iocb =3D opaque; NvmeRequest *req =3D iocb->req; NvmeNamespace *dns =3D req->ns; + BlockAcctStats *stats =3D blk_get_stats(dns->blkconf.blk); uint32_t nlb; =20 nvme_copy_source_range_parse(iocb->ranges, iocb->idx, iocb->format, NU= LL, @@ -2957,10 +2948,12 @@ static void nvme_copy_out_completed_cb(void *opaque= , int ret) if (ret < 0) { iocb->ret =3D ret; req->status =3D NVME_WRITE_FAULT; - goto out; - } else if (iocb->ret < 0) { + } + if (iocb->ret < 0) { + block_acct_failed(stats, &iocb->acct.write); goto out; } + block_acct_done(stats, &iocb->acct.write); =20 if (dns->params.zoned) { nvme_advance_zone_wp(dns, iocb->zone, nlb); @@ -2977,11 +2970,18 @@ static void nvme_copy_out_cb(void *opaque, int ret) NvmeCopyAIOCB *iocb =3D opaque; NvmeRequest *req =3D iocb->req; NvmeNamespace *dns =3D req->ns; + BlockAcctStats *stats =3D blk_get_stats(dns->blkconf.blk); uint32_t nlb; size_t mlen; uint8_t *mbounce; =20 - if (ret < 0 || iocb->ret < 0 || !dns->lbaf.ms) { + if (ret < 0 || iocb->ret < 0) { + block_acct_failed(stats, &iocb->acct.write); + goto out; + } + block_acct_done(stats, &iocb->acct.write); + + if (!dns->lbaf.ms) { goto out; } =20 @@ -2994,6 +2994,7 @@ static void nvme_copy_out_cb(void *opaque, int ret) qemu_iovec_reset(&iocb->iov); qemu_iovec_add(&iocb->iov, mbounce, mlen); =20 + block_acct_start(stats, &iocb->acct.write, mlen, BLOCK_ACCT_WRITE); iocb->aiocb =3D blk_aio_pwritev(dns->blkconf.blk, nvme_moff(dns, iocb-= >slba), &iocb->iov, 0, nvme_copy_out_completed_c= b, iocb); @@ -3010,6 +3011,7 @@ static void nvme_copy_in_completed_cb(void *opaque, i= nt ret) NvmeRequest *req =3D iocb->req; NvmeNamespace *sns =3D iocb->sns; NvmeNamespace *dns =3D req->ns; + BlockAcctStats *sstats =3D blk_get_stats(sns->blkconf.blk); NvmeCopyCmd *copy =3D NULL; uint8_t *mbounce =3D NULL; uint32_t nlb; @@ -3022,10 +3024,12 @@ static void nvme_copy_in_completed_cb(void *opaque,= int ret) if (ret < 0) { iocb->ret =3D ret; req->status =3D NVME_UNRECOVERED_READ; - goto out; - } else if (iocb->ret < 0) { + } + if (iocb->ret < 0) { + block_acct_failed(sstats, &iocb->acct.read); goto out; } + block_acct_done(sstats, &iocb->acct.read); =20 nvme_copy_source_range_parse(iocb->ranges, iocb->idx, iocb->format, &s= lba, &nlb, NULL, &apptag, &appmask, &reftag); @@ -3100,7 +3104,7 @@ static void nvme_copy_in_completed_cb(void *opaque, i= nt ret) qemu_iovec_reset(&iocb->iov); qemu_iovec_add(&iocb->iov, iocb->bounce, len); =20 - block_acct_start(blk_get_stats(dns->blkconf.blk), &iocb->acct.write, 0, + block_acct_start(blk_get_stats(dns->blkconf.blk), &iocb->acct.write, l= en, BLOCK_ACCT_WRITE); =20 iocb->aiocb =3D blk_aio_pwritev(dns->blkconf.blk, nvme_l2b(dns, iocb->= slba), @@ -3119,20 +3123,29 @@ static void nvme_copy_in_cb(void *opaque, int ret) { NvmeCopyAIOCB *iocb =3D opaque; NvmeNamespace *sns =3D iocb->sns; + BlockAcctStats *stats =3D blk_get_stats(sns->blkconf.blk); uint64_t slba; uint32_t nlb; + size_t mlen; + + if (ret < 0 || iocb->ret < 0) { + block_acct_failed(stats, &iocb->acct.read); + goto out; + } + block_acct_done(stats, &iocb->acct.read); =20 - if (ret < 0 || iocb->ret < 0 || !sns->lbaf.ms) { + if (!sns->lbaf.ms) { goto out; } =20 nvme_copy_source_range_parse(iocb->ranges, iocb->idx, iocb->format, &s= lba, &nlb, NULL, NULL, NULL, NULL); =20 + mlen =3D nvme_m2b(sns, nlb); qemu_iovec_reset(&iocb->iov); - qemu_iovec_add(&iocb->iov, iocb->bounce + nvme_l2b(sns, nlb), - nvme_m2b(sns, nlb)); + qemu_iovec_add(&iocb->iov, iocb->bounce + nvme_l2b(sns, nlb), mlen); =20 + block_acct_start(stats, &iocb->acct.read, mlen, BLOCK_ACCT_READ); iocb->aiocb =3D blk_aio_preadv(sns->blkconf.blk, nvme_moff(sns, slba), &iocb->iov, 0, nvme_copy_in_completed_cb, iocb); @@ -3337,7 +3350,7 @@ static void nvme_do_copy(NvmeCopyAIOCB *iocb) qemu_iovec_reset(&iocb->iov); qemu_iovec_add(&iocb->iov, iocb->bounce, len); =20 - block_acct_start(blk_get_stats(sns->blkconf.blk), &iocb->acct.read, 0, + block_acct_start(blk_get_stats(sns->blkconf.blk), &iocb->acct.read, le= n, BLOCK_ACCT_READ); =20 iocb->aiocb =3D blk_aio_preadv(sns->blkconf.blk, nvme_l2b(sns, slba), --=20 2.55.0 From nobody Sun Jul 26 10:07:45 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1784906735; cv=none; d=zohomail.com; s=zohoarc; b=FFlGMnIlclgSBhCEov9m+/glwpmGV1KvWM4kl5gcJD5cLD/9cQh/UNW6tFGk4t9Y+q1cq4BO3+87hirSNjPBRoapMdTtB/4EcKfG/oC/CgplxZZk5ufxDbjsyrtNEPSj40f53Qeu75oYimxJonh1oVkX5df/RmzgJQx1pBJ5r8s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784906735; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nWcZLxewRjil85dJfv3jFzqe8q0vXbspbRXQJFv8Ii4=; b=gImnqsKWD/XT1NYhaAkwXYD+QtCOrL7yx/ZSTRwVhcxGgy6f67XJIgucrEoRPWmXP9xbWBpLapw2RqCg8fbVkNXWu0HlZSEnCwVVjpNvHOhFnIeVQqRR5DyzOkIIlpnK2ACEiK8HDdnNl2lEqrVvxuDpQr2IasktNW9bhuWdrNc= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784906735207891.9082027469311; Fri, 24 Jul 2026 08:25:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wnHlq-0004vI-IF; Fri, 24 Jul 2026 11:25:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wnHln-0004p4-UZ for qemu-devel@nongnu.org; Fri, 24 Jul 2026 11:25:04 -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 1wnHlm-0008So-Ew for qemu-devel@nongnu.org; Fri, 24 Jul 2026 11:25:03 -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-619-zA3eRKXMO1GRh4s9Y7pvrw-1; Fri, 24 Jul 2026 11:23:29 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4955ecd8a10so6229725e9.3 for ; Fri, 24 Jul 2026 08:23:29 -0700 (PDT) Received: from localhost (p200300cfd7075d8bc03b74903e90fa9c.dip0.t-ipconnect.de. [2003:cf:d707:5d8b:c03b:7490:3e90:fa9c]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-496b406ea4dsm840355e9.8.2026.07.24.08.23.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 08:23:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1784906701; 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=nWcZLxewRjil85dJfv3jFzqe8q0vXbspbRXQJFv8Ii4=; b=ifapd6TnG/g/x0VJB8rF9RJFdjH9tVxzxJVRJCr03t2ai0yImqylbvjJkJEr3yCeic9b3G mHWZDcNqWZ0RRh278KuDzeKKlSDU0yDh5jnNt6jMVfZv0KNp++DetC5q6MlrtWRsO7H9im zGNWXA1lrYEre56E5S21mxGVusBYDgE= X-MC-Unique: zA3eRKXMO1GRh4s9Y7pvrw-1 X-Mimecast-MFC-AGG-ID: zA3eRKXMO1GRh4s9Y7pvrw_1784906609 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1784906608; x=1785511408; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=nWcZLxewRjil85dJfv3jFzqe8q0vXbspbRXQJFv8Ii4=; b=VYnE3f9fePGm52k4fBcIWS3CJL6kBhsvIcUbePAfgcpUsSapEnnOqkLXWPY2rzyYem /mLGHg3N0szeNCQTfF5dUTenmyucKH05ADpOyAIcDJt2in/s0y+jsBzSj/qOrsTNz9ja lXYgd2nPICwx1OUXGocJGFQ0XPWP9R0XDKqnxkbE41ttM5CciuQOfCKEo8cw71fgGYkj 7JdeZtQq+yYKoE6oCCKzbIr1pmMEehWYPf5GHLFtZqQruBnKlB5Jn4bX3bIngpqITHYl poY7xFDgru+XK+F/5skApiFC0hBKuojlU8r/B2dij46LnPoT4ft1oW5G1FlfknlXehQN ec2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784906608; x=1785511408; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=nWcZLxewRjil85dJfv3jFzqe8q0vXbspbRXQJFv8Ii4=; b=Ml3pWBsj3BVxGGeP8gx4xheXIKRt9dPfHre0bCwXklckAKFwiDSZG1zRHTWXBylhtq 94Taewgj+ZA0rejp9E/h3H1hjqF2bcHsaswHigooj7CPzwuOnlJhxgt4DsxNuM5LAjSr +6ONXkoDhqFth/iN0CWp7GysSoZx21bMquXh2LBBCiM36Vyy/2HR3MzK4Cwz1xSGDjMV rN3fAaAaZNjHPXrC1jgaHhevFE2OFSbeeHkT7NHNcgmuynfHfl1NRFJmcqdA5FLE/Ver 5DYj5lDHNqnxbuJfVnvUdiF9IClxdzQs2Iw+rsKjazaYeoL69RXA8qOB3BgxYKMpV5wv VI7w== X-Gm-Message-State: AOJu0Yxqz0LHJY9pVDvHEcxxxMOsfgGeqlpehusIjPWMvyaknU1z9LkL zHtMLYkWw9qai4hR9cDxdeqFbeRMo8nHfLwrKWmIULs1uHwn1c/Q8ZM7BlKIfEY+4rGkew+KGIl 7ck4QBTavYjxuxYIRwj5qU5c4F5cbJMXzpGkQmqUdeouk85QHP7EzL5WX X-Gm-Gg: AR+sD12g8O6/+05kr+t//8MCNdALwGD7ObyneMHxQlV7UwhvAgdnGhvdgfz1K3vh+uL 36PY9oaRMWSpGWts4/Cu5s4ULf9pYzu89vXZe33d21h7ISoYOKSImxaPJorZiUqsU6B2v0yWPUp jfQbNERwO6nqiBbzsqp3oI3VziAJZpbl+ZZ3qpneaTpUBFrVMNi4FPAmCv0P02r9V4jcvCsL1E+ vxBkGbcszEl2456NJ1MBM7z/pHxPCuToyRqwINeuyLsg0U4xlFtCKsyjoyf58XcBVBE3zhaLpqW Ix00RmbdNKKhvJev0beFK9Gn0giwEY72U9gdZSOm/ufmKiF+o95i2eVmfIdigeGPK894bcPwLBk jonNCpzktU3JbJod83Y0broAcgSfv8+n3h7d4ZJq/iHhK8pBqflEevmt/xoM= X-Received: by 2002:a7b:c7d7:0:b0:495:5858:e163 with SMTP id 5b1f17b1804b1-49573d0cd7amr67841375e9.27.1784906608569; Fri, 24 Jul 2026 08:23:28 -0700 (PDT) X-Received: by 2002:a7b:c7d7:0:b0:495:5858:e163 with SMTP id 5b1f17b1804b1-49573d0cd7amr67840945e9.27.1784906608160; Fri, 24 Jul 2026 08:23:28 -0700 (PDT) From: Hanna Czenczek To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, Hanna Czenczek , Kevin Wolf , Stefan Hajnoczi , "Michael S . Tsirkin" , Keith Busch , Klaus Jensen , Jesper Devantier , John Snow , Paolo Bonzini , Fam Zheng Subject: [PATCH 4/6] hw/nvme: Fix block accounting for compare Date: Fri, 24 Jul 2026 17:23:13 +0200 Message-ID: <20260724152315.234183-5-hreitz@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260724152315.234183-1-hreitz@redhat.com> References: <20260724152315.234183-1-hreitz@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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=hreitz@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.419, 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_PASS=-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: qemu development 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: 1784906736403158500 Content-Type: text/plain; charset="utf-8" nvme_compare() starts block accounting for the operation, but nvme_compare_data_cb() (and nvme_compare_mdata_cb()) do not always finalize the cookie. Specifically, there are a lot of error paths that do not call block_acct_failed(). Fix this by putting block_acct_done()/block_acct_failed() under the `out` labels of nvme_compare_data_cb() and nvme_compare_mdata_cb(). Signed-off-by: Hanna Czenczek --- hw/nvme/ctrl.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 32e78881234..335498a2d73 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -2388,7 +2388,6 @@ static void nvme_compare_mdata_cb(void *opaque, int r= et) trace_pci_nvme_compare_mdata_cb(nvme_cid(req)); =20 if (ret) { - block_acct_failed(stats, acct); req->status =3D NVME_UNRECOVERED_READ; =20 trace_pci_nvme_err_aio(nvme_cid(req), strerror(-ret), req->status); @@ -2443,9 +2442,14 @@ static void nvme_compare_mdata_cb(void *opaque, int = ret) goto out; } =20 - block_acct_done(stats, acct); =20 out: + if (req->status =3D=3D NVME_SUCCESS) { + block_acct_done(stats, acct); + } else { + block_acct_failed(stats, acct); + } + qemu_iovec_destroy(&ctx->data.iov); g_free(ctx->data.bounce); =20 @@ -2473,7 +2477,6 @@ static void nvme_compare_data_cb(void *opaque, int re= t) trace_pci_nvme_compare_data_cb(nvme_cid(req)); =20 if (ret) { - block_acct_failed(stats, acct); req->status =3D NVME_UNRECOVERED_READ; =20 trace_pci_nvme_err_aio(nvme_cid(req), strerror(-ret), req->status); @@ -2512,9 +2515,13 @@ static void nvme_compare_data_cb(void *opaque, int r= et) return; } =20 - block_acct_done(stats, acct); - out: + if (req->status =3D=3D NVME_SUCCESS) { + block_acct_done(stats, acct); + } else { + block_acct_failed(stats, acct); + } + qemu_iovec_destroy(&ctx->data.iov); g_free(ctx->data.bounce); g_free(ctx); --=20 2.55.0 From nobody Sun Jul 26 10:07:45 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1784906713; cv=none; d=zohomail.com; s=zohoarc; b=Mw7CXpr/s1shUvdi9wjNYwrY7aPV5cwHWMREN/T8UTdoPU2IXsQs7U3xKg9zrDxJHpCJrQZ24LQNBksPz2Z9un/X6Dyt2fL5BAMtii9j0AWSTTannGHiRSRuugNaQuylrg30DJpgd1f+n0xghcjvK3VMR5F31l7Lq64ylw2B9ow= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784906713; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+Ay04XcglQ+BYq8kOxs/s7bi2XnPNmC1IOwCeeW4oP0=; b=AouVOWm8iwMIAuVx6bSMvad4MmaOLxstNeINFoDwniCeqTfw2yCSNmMQuJmeQBNfiE9v7bfNbik1ZVLfbvGal5u8Vm6vwpKsSF//beODnN3ffxTj3oxPEnBGHo4iERMciXu9nrkKIZ2pe89WRG0MsnvEESBB4XBCo0Mlw8LdhqU= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178490671374175.3835150070189; Fri, 24 Jul 2026 08:25:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wnHlT-0004Ub-VJ; Fri, 24 Jul 2026 11:24:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wnHlR-0004Qu-UB for qemu-devel@nongnu.org; Fri, 24 Jul 2026 11:24:41 -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 1wnHlQ-0008Rq-C5 for qemu-devel@nongnu.org; Fri, 24 Jul 2026 11:24:41 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-657-0v9iGQURN9CiJ0IzGD3EYw-1; Fri, 24 Jul 2026 11:23:31 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-47eaa4006a1so298328f8f.0 for ; Fri, 24 Jul 2026 08:23:31 -0700 (PDT) Received: from localhost (p200300cfd7075d8bc03b74903e90fa9c.dip0.t-ipconnect.de. [2003:cf:d707:5d8b:c03b:7490:3e90:fa9c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f85b9a5a2sm27143970f8f.7.2026.07.24.08.23.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 08:23:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1784906679; 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=+Ay04XcglQ+BYq8kOxs/s7bi2XnPNmC1IOwCeeW4oP0=; b=Z7vd16ssOU9aKhZr2D2pL3FI5H4SwqLtFTFSDmDelYfKpSS95ypbQvmtW8FItKB2oZB1Hd a9hPnv8V49vHeHrkMlZ05pB23iedPgKZi53vQ/SCgoMhEynlFDGrsNCdosEgF7uOeMwClm 8IVKAiBPtzg7z7IE2ecL78quKQoHaqM= X-MC-Unique: 0v9iGQURN9CiJ0IzGD3EYw-1 X-Mimecast-MFC-AGG-ID: 0v9iGQURN9CiJ0IzGD3EYw_1784906610 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1784906610; x=1785511410; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=+Ay04XcglQ+BYq8kOxs/s7bi2XnPNmC1IOwCeeW4oP0=; b=nyVEAXZXYj4Jx8dxDYyH0O+DPua58uTvX7IZA4It3Q8d5k1b9vYl+E2mKQVf0wDqGU FsHQtc4WjLPKDpp9PRIwFnyrfz94fTb/HJ8xcGc5LwAczq/e6meRZXTI4sbA6eJIC+Cx Pl1GIDubIwP0UcdhK3ppxVUHd9Hub2+2MYnTifqUKgydnbPX4QF2hxbudtc3GBWEpauV n15/V7pL/jc7U8gCGE1gMfHbZ/pT92PIP3LzgXN7k5IPg8vOqtGR7r9TF35im+ICDVIb JHJm04bAzzz8n9JuuwQqveOELc9HlYHhps/UXweHIsg6hs3fL6ZpItun1ktnjbRUJcxB 01yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784906610; x=1785511410; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=+Ay04XcglQ+BYq8kOxs/s7bi2XnPNmC1IOwCeeW4oP0=; b=hb1II0buPSkB0kk21FJSTVH+8AXc/IVqSRm4jU/0q/lXLVeJ2oNaGP93K0MjcFhi79 nQWo1b/vws2uDoPVhrK8b59fIVEJYQof3hEVRu4ELNtJzFjXlLruaYvCG73fXlVVz0FN moI6Ar6UuGW1K9mhnayFfzDH2kffD+EEoE0wZtXzGwnKr6vjmnQfVTSGtpC5hw7DoLPE Zq15JNC/O+Vc/yKcmpb2wBnd+vLlzdBf0EW8MjoolzIhaag6zr4fdkiPNwixmaCgi3Lr +svC2ToEoldI4S5EywcUzjhGbzN2H2rksE6j+g599wAMd4eNV2ZnvxYl9ynxJl5KRTJS kcuw== X-Gm-Message-State: AOJu0Yw6gAvVt0q8FTlbOS7Dyi+eGTko9b/rKYV6Z9fCHQsQRIaDp/Lu /8FB20FFGn4t/Hn+Yt4iCx0LP30JDdIshsSE5cJvSG+oU3AapvHVnrYvzcSSX6/Bi/bT16G8E3A NGzSscPApCVpAnTyVaDmqhN/Vdnr2/Wmb0HsFHxQ0lqAxTzZ6XFkR7vLx X-Gm-Gg: AR+sD11xPzXQReyjEI3Auipo0O7Zza9CTTh3ZpXdLEjXdCMuV6MR75z0HjLS6uIhnVQ I6KVMqA3xwahLKbqk67mjzeiNLD+WD6xA8RX6KgMWqRkxN7f3Q2H7/+ZZjTbArWnprZ3MC8lAjb DF3Wly27pQyJQVSd/rTxYwz2qN3OVXIZ2qKaBtvlAK0hM0FOp5YOD15RtYhC/LSmd+0Mozkb010 abz87xMwQstNBB7Y7f2+KhC5vOjG8BAc1esnEDCQhhprhIggJIZ/9M5zrd98lZi7+cVLZvnyaYI qMj8/5HiC1JK3+SeWcY05B6ymJuZl4BtuvYHBCVp8Jq1T9Emy4+zvu1sELssMqJRxJPULHh4KI4 qgFnpc6va312D7PG9tuDgvMK6121azXc8qnhwferPSn3VeVsotQKsapXrVN4= X-Received: by 2002:a05:6000:2304:b0:47f:8fda:1af0 with SMTP id ffacd0b85a97d-47f9cdaf475mr1436038f8f.4.1784906610369; Fri, 24 Jul 2026 08:23:30 -0700 (PDT) X-Received: by 2002:a05:6000:2304:b0:47f:8fda:1af0 with SMTP id ffacd0b85a97d-47f9cdaf475mr1436002f8f.4.1784906609981; Fri, 24 Jul 2026 08:23:29 -0700 (PDT) From: Hanna Czenczek To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, Hanna Czenczek , Kevin Wolf , Stefan Hajnoczi , "Michael S . Tsirkin" , Keith Busch , Klaus Jensen , Jesper Devantier , John Snow , Paolo Bonzini , Fam Zheng Subject: [PATCH 5/6] hw/ide: Have ide_dma_cb() complete accounting Date: Fri, 24 Jul 2026 17:23:14 +0200 Message-ID: <20260724152315.234183-6-hreitz@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260724152315.234183-1-hreitz@redhat.com> References: <20260724152315.234183-1-hreitz@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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=hreitz@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.419, 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_PASS=-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: qemu development 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: 1784906715034158500 Content-Type: text/plain; charset="utf-8" ide_sector_start_dma() starts accounting for reading and writing, and ide_dma_cb() is supposed to complete it, but currently does not always: In one case, it just forgets it altogether, in the other, it uses block_acct_invalid(), which should not be used after a cookie has already been created. Signed-off-by: Hanna Czenczek --- hw/ide/core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/ide/core.c b/hw/ide/core.c index f78b00220b8..d18adceffc0 100644 --- a/hw/ide/core.c +++ b/hw/ide/core.c @@ -878,6 +878,7 @@ static void ide_dma_cb(void *opaque, int ret) =20 if (ret =3D=3D -EINVAL) { ide_dma_error(s); + block_acct_failed(blk_get_stats(s->blk), &s->acct); return; } =20 @@ -944,7 +945,7 @@ static void ide_dma_cb(void *opaque, int ret) if ((s->dma_cmd =3D=3D IDE_DMA_READ || s->dma_cmd =3D=3D IDE_DMA_WRITE= ) && !ide_sect_range_ok(s, sector_num, n)) { ide_dma_error(s); - block_acct_invalid(blk_get_stats(s->blk), s->acct.type); + block_acct_failed(blk_get_stats(s->blk), &s->acct); return; } =20 --=20 2.55.0 From nobody Sun Jul 26 10:07:45 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1784907024; cv=none; d=zohomail.com; s=zohoarc; b=DMK4kHiMyjZN+vTfs6nmICkECk8g2KCA1qIrbmHQPI2kJDQKMd+RMcdH2IswlNCri01ys3CXIHQjGkXSZbHR0sSRFkIiks33aVg/G+GWIOAa811gxc212KP9HKX5Ae5cypSzmMRivi7qtKZX7RyzmjsVfp10coO2+ci7Nbh4haE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784907024; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=t72qd/5MMeISsDYxcEFSV8VQkDzS+BmegPPiwhmLeO8=; b=JrbOauq2YBzom8P9DazkAaoeMmkeLSArFSZiMcRXDCX9x+KLZjBhp0OgachlXoDGrkfZmZHDkXbU/+JSqlai05uA4I33eGXdVjYTpwqGx6tn+zQU3emede6EXKV6HzvFEIDSvlJmFXvnS7irdxoRRUpWJ2+WC1pGkfOGgACnVj0= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784907024441279.0189387267138; Fri, 24 Jul 2026 08:30:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wnHqp-0001PT-Sa; Fri, 24 Jul 2026 11:30:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wnHqh-0001On-Kj for qemu-devel@nongnu.org; Fri, 24 Jul 2026 11:30:09 -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 1wnHqe-0001fz-W4 for qemu-devel@nongnu.org; Fri, 24 Jul 2026 11:30:06 -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-665-Kgkep8pyOgmLwPhwjnP6ug-1; Fri, 24 Jul 2026 11:23:33 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4956b4cfe19so5399735e9.0 for ; Fri, 24 Jul 2026 08:23:33 -0700 (PDT) Received: from localhost (p200300cfd7075d8bc03b74903e90fa9c.dip0.t-ipconnect.de. [2003:cf:d707:5d8b:c03b:7490:3e90:fa9c]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4957b842691sm60213175e9.1.2026.07.24.08.23.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 08:23:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1784907004; 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=t72qd/5MMeISsDYxcEFSV8VQkDzS+BmegPPiwhmLeO8=; b=BqLOW8CNlSWAL6wiJ1tyKLDK8w4CW4qQHDbTkF0ZukXN1BjVVUAc60mXlC//vTmmeJq2La pRc9PTAzdhAnt0KJQbDxnhwonBLX6OozpQmLrxeJASfiKF7isj4OXppsklx61Gj0L6Ig2q 0HRvYDlU1cmQihjUpAbUWUKJcehLP3U= X-MC-Unique: Kgkep8pyOgmLwPhwjnP6ug-1 X-Mimecast-MFC-AGG-ID: Kgkep8pyOgmLwPhwjnP6ug_1784906612 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1784906612; x=1785511412; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=t72qd/5MMeISsDYxcEFSV8VQkDzS+BmegPPiwhmLeO8=; b=HloEUnrWVae4EVmzjBARdRYJL9yN52fmqDYHnl/93RJB5x4sYArwgUB+MrfngvrAXa TmlcxxdMqcIWHeGX2uZD4ifMnUoYEiU/ZsgnLq56GITXtO1fYMg3XQwaJzFy7Rdhjtbn bmRElbsH9d2IOGHRe3b1J/7S36Tcs6q+xKD7NI5+AZ3rCCluguNUYZ3nNwB6WseYxvao keaREodNA4hl4g/XZUK+Zo2yYnjtZ1rwVcborGjEmC6BJesQluvEF4Wuk8J7nuz7pi7a Cu//mk9aLNczcgbsoYLvR1/0WhW4mqEcM5ZLom99VuPVgAC6zHH/tIXw18TXnnYMXlog vmzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784906612; x=1785511412; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=t72qd/5MMeISsDYxcEFSV8VQkDzS+BmegPPiwhmLeO8=; b=qtrQccqQQwtZBjs8Gi6kj8kSouW0i4yY1R3+rgl0WkMwxkJ0owVjiNS58K2thJF8Lx 76Up6cEx+EuEnysfXro5aML95CB+KeqaQzQlTxbzvqm5QbhGeGSmGlwBDCJhG1PJxPxL B6fFp43IWaRaTXqxpwFEBbjJcAEMGIPX1L939TnsG5Q7qiOvZmkJ+8bP7Z4+kCZBoeup UUVtFWbpPQ2aC8394Z042BX7m5YRo9UfBeQfxrAgzB6yRvfA9dnCMs4Iv3gUEuSTzSNs NSAzWHC1/yHiqcPEow69zbE8Q+ugOYlDMM75PMGmgLOPUnoHJZZIjxiqNVKM40sMSJ0a aghw== X-Gm-Message-State: AOJu0Yxc8gEcbSX8EK0L5g9eTQDnXQ1/ktSWsu21frJqg13fyE2zhTf3 NTg9z3HdeNcEKp1La84FA3amAyoVbCalCsKeLk+HYwJje6Jh2mcxilLgIlOKeF/Nbw4X1jnCc5G UOGAO49Z4fGeyZ9rXjCdQk8GVidvoIN41Ou4tW9x+FABFZlT3fBITrCl6 X-Gm-Gg: AR+sD129KD1ts/fWaqmxav48Uk422hSW8zo+/F7vBaHXF8PNTV5Qw/JgKeBoz/pdvxP WIylQNFH050lh3TO2cTQawcc2Iv32NJyO5pM1sWdNhSsNbj8VAiUqpS2/CY/62BxqHFikIzr0di 4URWQ3B9BzHW9ufV/nUN+Rjs+Ssf9Nr6D1eYoht0wb4smz0LSpqJwHDw5yjxgg6/bQCkpLLnuRA 1t8L7+O3S3aFl14mWfSiGp7L+JqyZGYJhXdvGMksGHg7LZ6so63rKtt3JDq0U1HhUSI/zMuBHzL n89lFp8TLZEsSQ9jZKQvPallfBvUCeQo+84IBiyOdTmTm+q5oihzyJVnEq7PQNxjqZWr8hFj+gx 2ggi13HWU/m0PRQT9511L6L02QDhJcTAwDqyhPj6d9WPFISJZbAS/pHNl2qQ= X-Received: by 2002:a05:600c:6dd6:b0:493:eed4:7210 with SMTP id 5b1f17b1804b1-49573cc97c2mr64644985e9.11.1784906612040; Fri, 24 Jul 2026 08:23:32 -0700 (PDT) X-Received: by 2002:a05:600c:6dd6:b0:493:eed4:7210 with SMTP id 5b1f17b1804b1-49573cc97c2mr64644815e9.11.1784906611695; Fri, 24 Jul 2026 08:23:31 -0700 (PDT) From: Hanna Czenczek To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, Hanna Czenczek , Kevin Wolf , Stefan Hajnoczi , "Michael S . Tsirkin" , Keith Busch , Klaus Jensen , Jesper Devantier , John Snow , Paolo Bonzini , Fam Zheng Subject: [PATCH 6/6] hw/scsi-disk: Fix accounting for IGNORE, ret > 0 Date: Fri, 24 Jul 2026 17:23:15 +0200 Message-ID: <20260724152315.234183-7-hreitz@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260724152315.234183-1-hreitz@redhat.com> References: <20260724152315.234183-1-hreitz@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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=hreitz@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.419, 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_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development 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: 1784907026571158500 Content-Type: text/plain; charset="utf-8" When encountering SCSI error status (ret > 0), accounting is left to scsi_handle_rw_error(), but the BLOCK_ERROR_ACTION_IGNORE path in turn leaves accounting (block_acct_done()) to the caller, so neither side does it. Fix this by unconditionally calling block_acct_done() in the IGNORE path. Yes, this will often result in it being called twice, but that is a no-op, as block_acct_done() resets the cookie type to BLOCK_ACCT_NONE, and will only do accounting if the type is not BLOCK_ACCT_NONE. (And given that the conditions on who does what accounting are quite confusing in scsi-disk, for me at least, I prefer this unconditional call rather than guard it with a condition that has no obvious reason.) Signed-off-by: Hanna Czenczek --- hw/scsi/scsi-disk.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c index 1b0cce128c5..92b63b64d56 100644 --- a/hw/scsi/scsi-disk.c +++ b/hw/scsi/scsi-disk.c @@ -318,6 +318,13 @@ static bool scsi_handle_rw_error(SCSIDiskReq *r, int r= et, bool acct_failed) return true; =20 case BLOCK_ERROR_ACTION_IGNORE: + /* + * The caller may have already finalized the accounting cookie + * (e.g. scsi_dma_complete() for ret < 0), but calling + * block_acct_done() afterwards is fine (just a no-op). Just + * make sure all cookies are indeed accounted at some point. + */ + block_acct_done(blk_get_stats(s->qdev.conf.blk), &r->acct); return false; =20 case BLOCK_ERROR_ACTION_STOP: --=20 2.55.0