From nobody Thu Nov 13 23:24:11 2025 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zohomail.com; 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=fail(p=none dis=none) header.from=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1583143732; cv=none; d=zohomail.com; s=zohoarc; b=Q0R6zr0jlh6qsT5dMouSDN2AfMeQkAWKaRmucUIzMfcHuqfSKpBay9uKE42SVWzHP3xnUr9pJm4pWpp1LuF1VUlkvqY0tADlAt+lrBPn9eUDNItNyxXVL2eNh13gcGRmpdRnDWP/pH/VExtKbGR4n4Zyd3uRc3hX6uf4tO/YUS0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583143732; h=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=n9RMM/+/1z0VLM10aP+RrWggOFR/x+v6d6cctqfzux8=; b=MPwd5etG/OvlKnfsh3Ux8QcpPeMKI9DRXamb8hPfd9p6ojlA9cL3cPrrV4xGMUyL37xCba9Y6/MBZWGsqhtaFBedUNuiV23Pv6y1oW1mBUerDnuwtl261bewhkyP4W0Mx+KEMtLTr6D8M1ZcSSV3r4mKaQrZwXQ4jNy45LjvqWY= ARC-Authentication-Results: i=1; mx.zohomail.com; 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=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1583143732716887.7226091372123; Mon, 2 Mar 2020 02:08:52 -0800 (PST) Received: from localhost ([::1]:57914 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8i0J-0001YI-FJ for importer@patchew.org; Mon, 02 Mar 2020 05:08:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50777) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8hxV-0004W6-Ab for qemu-devel@nongnu.org; Mon, 02 Mar 2020 05:05:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j8hxU-0007lW-9E for qemu-devel@nongnu.org; Mon, 02 Mar 2020 05:05:57 -0500 Received: from relay.sw.ru ([185.231.240.75]:48190) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j8hxR-0007jJ-S7; Mon, 02 Mar 2020 05:05:54 -0500 Received: from vovaso.qa.sw.ru ([10.94.3.0] helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.3) (envelope-from ) id 1j8hxI-000350-An; Mon, 02 Mar 2020 13:05:44 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Subject: [PATCH 4/5] block/io: fix bdrv_co_do_pwrite_zeroes head calculation Date: Mon, 2 Mar 2020 13:05:36 +0300 Message-Id: <20200302100537.29058-5-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20200302100537.29058-1-vsementsov@virtuozzo.com> References: <20200302100537.29058-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: fam@euphon.net, kwolf@redhat.com, vsementsov@virtuozzo.com, qemu-stable@nongnu.org, qemu-devel@nongnu.org, mreitz@redhat.com, stefanha@redhat.com, den@openvz.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" It's wrong to update head using num in this place, as num may be reduced during the iteration, and we'll have wrong head value on next iteration. Instead update head at iteration end. Cc: qemu-stable@nongnu.org Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/io.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/block/io.c b/block/io.c index 75fd5600c2..c64566b4cf 100644 --- a/block/io.c +++ b/block/io.c @@ -1785,7 +1785,6 @@ static int coroutine_fn bdrv_co_do_pwrite_zeroes(Bloc= kDriverState *bs, * convenience, limit this request to max_transfer even if * we don't need to fall back to writes. */ num =3D MIN(MIN(bytes, max_transfer), alignment - head); - head =3D (head + num) % alignment; assert(num < max_write_zeroes); } else if (tail && num > alignment) { /* Shorten the request to the last aligned sector. */ @@ -1844,6 +1843,9 @@ static int coroutine_fn bdrv_co_do_pwrite_zeroes(Bloc= kDriverState *bs, =20 offset +=3D num; bytes -=3D num; + if (head) { + head =3D offset % alignment; + } } =20 fail: --=20 2.21.0