From nobody Thu Nov 13 21:55:29 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=1583143634; cv=none; d=zohomail.com; s=zohoarc; b=le4OHpauicg4wREJF7/XLzMGBBTsfxx2pZIftmvITMQvELFWNDkWFUVyxa0fzf2dUzwvdM3gw3BCqphEc9FmCpRQRWBDArKDtIy1yNAoPoYXkl7f3B1o87FfT3qv5cq4JIclf45RkeJgSz2ypY4fCCFLJ3pCXio8OrlxycY9c78= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583143634; 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=bCjD1TqbeVrfOgXJu6et5lmUJ3iQwDYVqbX6hcynamk=; b=mrb/sczl4wDR2m8VKEyslhmjJDswFTCFBi5bJtvF77VKbkt6ihl+/s7B2AB9CV2GmaXldaoccrq275IWHOpk88pLcid6ORgZ80h4Mq83X2z5lZh4cb1M6KWHjdE5ZdtAmf5XgXuEq5cDwlGrr9r2E+9AB8/yZwArACIM27UbLeg= 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 1583143634958274.3931365436779; Mon, 2 Mar 2020 02:07:14 -0800 (PST) Received: from localhost ([::1]:57849 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8hyj-0006vV-OO for importer@patchew.org; Mon, 02 Mar 2020 05:07:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50782) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8hxV-0004WO-GS 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-0007lb-9k for qemu-devel@nongnu.org; Mon, 02 Mar 2020 05:05:57 -0500 Received: from relay.sw.ru ([185.231.240.75]:48186) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j8hxR-0007jI-SF; 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 1j8hxH-000350-TU; Mon, 02 Mar 2020 13:05:43 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Subject: [PATCH 1/5] block/nbd-client: drop max_block restriction from block_status Date: Mon, 2 Mar 2020 13:05:33 +0300 Message-Id: <20200302100537.29058-2-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-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" NBD spec is updated, so that max_block doesn't relate to NBD_CMD_BLOCK_STATUS. So, drop the restriction. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 976be76647..2a58d6b91c 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -1320,9 +1320,7 @@ static int coroutine_fn nbd_client_co_block_status( NBDRequest request =3D { .type =3D NBD_CMD_BLOCK_STATUS, .from =3D offset, - .len =3D MIN(MIN_NON_ZERO(QEMU_ALIGN_DOWN(INT_MAX, - bs->bl.request_alignment), - s->info.max_block), + .len =3D MIN(QEMU_ALIGN_DOWN(INT_MAX, bs->bl.request_alignment), MIN(bytes, s->info.size - offset)), .flags =3D NBD_CMD_FLAG_REQ_ONE, }; --=20 2.21.0 From nobody Thu Nov 13 21:55:29 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=1583143621; cv=none; d=zohomail.com; s=zohoarc; b=H4vF83IQzxW+vIUM1R/Itoc43QFo6teFj4u4ZDAYrZQ8UCSnnUkh3C9MejC9MqQjbUqdnGUzemHheipGAmYob9rKmlqX1ll/572OsUWmMTQcudXb6Oe7Zo6i5cCnxowHaeq/AWnoM2BcWEeJxyndq7EfLfE9Sku/bEUTaqWW/mc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583143621; 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=zXBeCQj2K7qzuos4fKSB+18IpWRZsEwDNfs9Cr9pGPc=; b=kHPHs3Jawr+rwTn16GvdbokpPPdy6KkkDuxtLWJbhsN000uo0e8O25EDp+t9IfQkuL0hJDwA9NESWDc7xTapYTe6inZbHRX411eUspmAYBMN+/hzr3SUwXMq4UiYNWCWw5l/LT5FsZgbFkFvprsM8a65kIY/Fz1Cm/j3VlEVDa8= 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 1583143620909113.27260204339416; Mon, 2 Mar 2020 02:07:00 -0800 (PST) Received: from localhost ([::1]:57840 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8hyU-00069U-3C for importer@patchew.org; Mon, 02 Mar 2020 05:06:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50762) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8hxU-0004UN-Vt for qemu-devel@nongnu.org; Mon, 02 Mar 2020 05:05:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j8hxU-0007lJ-37 for qemu-devel@nongnu.org; Mon, 02 Mar 2020 05:05:56 -0500 Received: from relay.sw.ru ([185.231.240.75]:48174) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j8hxR-0007jL-SY; 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-1e; Mon, 02 Mar 2020 13:05:44 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Subject: [PATCH 2/5] block/nbd-client: drop max_block restriction from discard Date: Mon, 2 Mar 2020 13:05:34 +0300 Message-Id: <20200302100537.29058-3-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-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" NBD spec is updated, so that max_block doesn't relate to NBD_CMD_TRIM. So, drop the restriction. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/nbd.c | 1 - 1 file changed, 1 deletion(-) diff --git a/block/nbd.c b/block/nbd.c index 2a58d6b91c..a62761ea5a 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -1955,7 +1955,6 @@ static void nbd_refresh_limits(BlockDriverState *bs, = Error **errp) } =20 bs->bl.request_alignment =3D min; - bs->bl.max_pdiscard =3D max; bs->bl.max_pwrite_zeroes =3D max; bs->bl.max_transfer =3D max; =20 --=20 2.21.0 From nobody Thu Nov 13 21:55:29 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=1583143636; cv=none; d=zohomail.com; s=zohoarc; b=ep3hncBabNtWTndITpvOCCCHEe3l0WC4G81qDD+IylTccv0Clyc6C1FrU13kzcNFoW9q1DSfgWoU5slovld39jID79xM9E7QGKhADzmOhskNfggr7Q8jig3uoT28TLrpb/FrwxJvGeJfgl8VJvZsG7EXI0elTJA8dsJSH50VSxo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583143636; 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=pVltROmI9YCbXfvP5f9CT29ApLr5NRoPgEE9sHtrHck=; b=KXEjGp5eOyMrpyAYKUt+F1Ldrs0bpPynLSMvygYXMno2vt/PJSAP8YXiA12zWTVRnBgVIE37NV0HbCKezvFnlo8aZQLxWo2KdinicXL0LREAhdk/STiKvF9iukLe6+QiWcOvb8lhNgICDPlffMoF77XmdBhtDOxhWcaI6ERTFL0= 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 1583143636345341.4603662644663; Mon, 2 Mar 2020 02:07:16 -0800 (PST) Received: from localhost ([::1]:57852 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8hyl-00070N-54 for importer@patchew.org; Mon, 02 Mar 2020 05:07:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50784) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8hxV-0004WR-Hs 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-0007lh-CN for qemu-devel@nongnu.org; Mon, 02 Mar 2020 05:05:57 -0500 Received: from relay.sw.ru ([185.231.240.75]:48176) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j8hxR-0007jM-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-77; Mon, 02 Mar 2020 13:05:44 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Subject: [PATCH 3/5] block: add max_pwrite_zeroes_no_fallback to BlockLimits Date: Mon, 2 Mar 2020 13:05:35 +0300 Message-Id: <20200302100537.29058-4-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-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" NBD spec is updated, so that max_block doesn't relate to NBD_CMD_WRITE_ZEROES with NBD_CMD_FLAG_FAST_ZERO (which mirrors Qemu flag BDRV_REQ_NO_FALLBACK). To drop the restriction we need new max_pwrite_zeroes_no_fallback. Default value of new max_pwrite_zeroes_no_fallback is zero and it means no-restriction, so we are automatically done by this commit. Note that nbd and blkdebug are the only drivers which in the same time define max_pwrite_zeroes limit and support BDRV_REQ_NO_FALLBACK, so we need to update only blkdebug. Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/block/block_int.h | 8 ++++++++ block/blkdebug.c | 7 ++++++- block/io.c | 4 +++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/include/block/block_int.h b/include/block/block_int.h index 6f9fd5e20e..c167e887c6 100644 --- a/include/block/block_int.h +++ b/include/block/block_int.h @@ -618,6 +618,14 @@ typedef struct BlockLimits { * pwrite_zeroes_alignment. May be 0 if no inherent 32-bit limit */ int32_t max_pwrite_zeroes; =20 + /* + * Maximum number of bytes that can zeroized at once if flag + * BDRV_REQ_NO_FALLBACK specified (since it is signed, it must be < 2G= , if + * set). Must be multiple of pwrite_zeroes_alignment. May be 0 if no + * inherent 32-bit limit. + */ + int32_t max_pwrite_zeroes_no_fallback; + /* Optimal alignment for write zeroes requests in bytes. A power * of 2 is best but not mandatory. Must be a multiple of * bl.request_alignment, and must be less than max_pwrite_zeroes diff --git a/block/blkdebug.c b/block/blkdebug.c index af44aa973f..7627fbcb3b 100644 --- a/block/blkdebug.c +++ b/block/blkdebug.c @@ -692,7 +692,11 @@ static int coroutine_fn blkdebug_co_pwrite_zeroes(Bloc= kDriverState *bs, } assert(QEMU_IS_ALIGNED(offset, align)); assert(QEMU_IS_ALIGNED(bytes, align)); - if (bs->bl.max_pwrite_zeroes) { + if ((flags & BDRV_REQ_NO_FALLBACK) && + bs->bl.max_pwrite_zeroes_no_fallback) + { + assert(bytes <=3D bs->bl.max_pwrite_zeroes_no_fallback); + } else if (bs->bl.max_pwrite_zeroes) { assert(bytes <=3D bs->bl.max_pwrite_zeroes); } =20 @@ -977,6 +981,7 @@ static void blkdebug_refresh_limits(BlockDriverState *b= s, Error **errp) } if (s->max_write_zero) { bs->bl.max_pwrite_zeroes =3D s->max_write_zero; + bs->bl.max_pwrite_zeroes_no_fallback =3D s->max_write_zero; } if (s->opt_discard) { bs->bl.pdiscard_alignment =3D s->opt_discard; diff --git a/block/io.c b/block/io.c index 7e4cb74cf4..75fd5600c2 100644 --- a/block/io.c +++ b/block/io.c @@ -1752,7 +1752,9 @@ static int coroutine_fn bdrv_co_do_pwrite_zeroes(Bloc= kDriverState *bs, int head =3D 0; int tail =3D 0; =20 - int max_write_zeroes =3D MIN_NON_ZERO(bs->bl.max_pwrite_zeroes, INT_MA= X); + int max_write_zeroes =3D MIN_NON_ZERO((flags & BDRV_REQ_NO_FALLBACK) ? + bs->bl.max_pwrite_zeroes_no_fallba= ck : + bs->bl.max_pwrite_zeroes, INT_MAX); int alignment =3D MAX(bs->bl.pwrite_zeroes_alignment, bs->bl.request_alignment); int max_transfer =3D MIN_NON_ZERO(bs->bl.max_transfer, MAX_BOUNCE_BUFF= ER); --=20 2.21.0 From nobody Thu Nov 13 21:55:29 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 From nobody Thu Nov 13 21:55:29 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=1583143626; cv=none; d=zohomail.com; s=zohoarc; b=lR1ip9bqp2knNDBWCiVx2paRWfdb1N/PMnTzUltVKTFyo7t218aeq6AyahFbY51MCdA18P4uZ+nsEfVqiUT611hOsjCOVL8cBtwzkt4vTRQumnDQWw/DOOLLx9RD+dvMUIsXtaYBYpWcmXb5qBa45c7KBbWiLmKU6DrGDhNXDrk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583143626; 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=rvL4t5aEUv2bTsDoIO725ZVV5UAnG+Yl07pEuU7MNSk=; b=UF2r0airjsNTXC8uwtUh+UI9/lqoVtQro9ymZ01Ih07Z1vkJLMhbQknp4tl/kVculLckex2Oir82y6Egw6+zB6VOST6FripYVcgwOEcDdXN+kwWYzHe6Nx3lOU1gqVhhEZ3iQKiWfTBAn90DcO3eEhjfPLncLfnW8c0Ohd6Op/w= 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 1583143626931551.1986861159602; Mon, 2 Mar 2020 02:07:06 -0800 (PST) Received: from localhost ([::1]:57844 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8hya-0006Rl-E6 for importer@patchew.org; Mon, 02 Mar 2020 05:07:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50789) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8hxV-0004WT-NW 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-0007lq-Ji for qemu-devel@nongnu.org; Mon, 02 Mar 2020 05:05:57 -0500 Received: from relay.sw.ru ([185.231.240.75]:48184) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j8hxR-0007jH-ST; 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-Gj; Mon, 02 Mar 2020 13:05:44 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Subject: [PATCH 5/5] block/io: auto-no-fallback for write-zeroes Date: Mon, 2 Mar 2020 13:05:37 +0300 Message-Id: <20200302100537.29058-6-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-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" NBD driver may has max_pwrite_zeroes but doesn't has max_pwrite_zeroes_no_fallback limit. This means, that (when BDRV_REQ_NO_FALLBACK is supported) it is beneficial to try send request with BDRV_REQ_NO_FALLBACK instead of splitting the request accordingly to max_pwrite_zeroes. If failed, fallback to old behavior. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/io.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/block/io.c b/block/io.c index c64566b4cf..48d71b0883 100644 --- a/block/io.c +++ b/block/io.c @@ -1752,17 +1752,28 @@ static int coroutine_fn bdrv_co_do_pwrite_zeroes(Bl= ockDriverState *bs, int head =3D 0; int tail =3D 0; =20 - int max_write_zeroes =3D MIN_NON_ZERO((flags & BDRV_REQ_NO_FALLBACK) ? - bs->bl.max_pwrite_zeroes_no_fallba= ck : - bs->bl.max_pwrite_zeroes, INT_MAX); + int max_write_zeroes; int alignment =3D MAX(bs->bl.pwrite_zeroes_alignment, bs->bl.request_alignment); int max_transfer =3D MIN_NON_ZERO(bs->bl.max_transfer, MAX_BOUNCE_BUFF= ER); + bool auto_no_fallback; =20 if (!drv) { return -ENOMEDIUM; } =20 + if (!(flags & BDRV_REQ_NO_FALLBACK) && + (bs->supported_zero_flags & BDRV_REQ_NO_FALLBACK) && + bs->bl.max_pwrite_zeroes && + bs->bl.max_pwrite_zeroes < bytes && + (bs->bl.max_pwrite_zeroes < bs->bl.max_pwrite_zeroes_no_fallback || + bs->bl.max_pwrite_zeroes_no_fallback =3D=3D 0)) + { + assert(drv->bdrv_co_pwrite_zeroes); + flags |=3D BDRV_REQ_NO_FALLBACK; + auto_no_fallback =3D true; + } + if ((flags & ~bs->supported_zero_flags) & BDRV_REQ_NO_FALLBACK) { return -ENOTSUP; } @@ -1770,7 +1781,11 @@ static int coroutine_fn bdrv_co_do_pwrite_zeroes(Blo= ckDriverState *bs, assert(alignment % bs->bl.request_alignment =3D=3D 0); head =3D offset % alignment; tail =3D (offset + bytes) % alignment; - max_write_zeroes =3D QEMU_ALIGN_DOWN(max_write_zeroes, alignment); + max_write_zeroes =3D + QEMU_ALIGN_DOWN(MIN_NON_ZERO((flags & BDRV_REQ_NO_FALLBACK) ? + bs->bl.max_pwrite_zeroes_no_fallback : + bs->bl.max_pwrite_zeroes, INT_MAX), + alignment); assert(max_write_zeroes >=3D bs->bl.request_alignment); =20 while (bytes > 0 && !ret) { @@ -1801,6 +1816,13 @@ static int coroutine_fn bdrv_co_do_pwrite_zeroes(Blo= ckDriverState *bs, if (drv->bdrv_co_pwrite_zeroes) { ret =3D drv->bdrv_co_pwrite_zeroes(bs, offset, num, flags & bs->supported_zero_fl= ags); + if (ret =3D=3D -ENOTSUP && auto_no_fallback) { + flags &=3D ~BDRV_REQ_NO_FALLBACK; + max_write_zeroes =3D + QEMU_ALIGN_DOWN(MIN_NON_ZERO(bs->bl.max_pwrite_zeroes, + INT_MAX), alignment); + continue; + } if (ret !=3D -ENOTSUP && (flags & BDRV_REQ_FUA) && !(bs->supported_zero_flags & BDRV_REQ_FUA)) { need_flush =3D true; --=20 2.21.0