From nobody Mon Feb 9 08:09:53 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1571743742; cv=none; d=zoho.com; s=zohoarc; b=NEpbbtkmVJOBsJka4t0PLC/BNU1GDet0DVdnxZbIHJ4qsYhk+qm3f7GWtDmqqP1NKy3uV//XkU72HvTrJpELmzqrpdGVGCULHyd2vK5nlRm84yfLL9CPHxUiTC0qh4akA+qiAWeVToEk8fvuAObT7JbUSHpwLOZy0sNvmIUqxZI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1571743742; 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=HrEaAPG4ywCU3FgZDke3Es1Q7YlSnwgLwoOdtwH+460=; b=KZmMqOVnaBIfy8zjUUABe+9mDyeGnIXRcO5dmtjxyswXhI+EoBO8oZ6saURe/3aGg8H6VrBX8iZ4GBuHfv5hdATgP6qS6L0S/PBrrUNhA27ymU/LNIQDY5JYp8HW7vGajIkX0UPSWoEYv8XEFXw7ZWc/AMn2bI2EDg52tW7ckLg= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1571743742345913.4096009476225; Tue, 22 Oct 2019 04:29:02 -0700 (PDT) Received: from localhost ([::1]:53562 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iMsLU-0000g2-No for importer@patchew.org; Tue, 22 Oct 2019 07:29:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44029) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iMsB4-0004An-8G for qemu-devel@nongnu.org; Tue, 22 Oct 2019 07:18:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iMsB3-0007hH-4Q for qemu-devel@nongnu.org; Tue, 22 Oct 2019 07:18:14 -0400 Received: from relay.sw.ru ([185.231.240.75]:51898) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iMsAz-0007do-RT; Tue, 22 Oct 2019 07:18:10 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iMsAw-0003JX-Gx; Tue, 22 Oct 2019 14:18:06 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Subject: [PATCH v3 2/6] block/block-copy: limit copy_range_size to 16 MiB Date: Tue, 22 Oct 2019 14:18:01 +0300 Message-Id: <20191022111805.3432-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191022111805.3432-1-vsementsov@virtuozzo.com> References: <20191022111805.3432-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: kwolf@redhat.com, vsementsov@virtuozzo.com, qemu-devel@nongnu.org, mreitz@redhat.com, den@openvz.org, jsnow@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Large copy range may imply memory allocation and large io effort, so using 2G copy range request may be bad idea. Let's limit it to 16 MiB. It also helps the following patch to refactor copy-with-offload fallback to copy-with-bounce-buffer. Note, that total memory usage of backup is still not limited, it will be fixed in further commit. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Max Reitz --- block/block-copy.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/block/block-copy.c b/block/block-copy.c index ecd086010e..cd45b373a9 100644 --- a/block/block-copy.c +++ b/block/block-copy.c @@ -18,6 +18,9 @@ #include "qapi/error.h" #include "block/block-copy.h" #include "sysemu/block-backend.h" +#include "qemu/units.h" + +#define BLOCK_COPY_MAX_COPY_RANGE (16 * MiB) =20 static void coroutine_fn block_copy_wait_inflight_reqs(BlockCopyState *s, int64_t start, @@ -70,9 +73,12 @@ BlockCopyState *block_copy_state_new(BdrvChild *source, = BdrvChild *target, { BlockCopyState *s; BdrvDirtyBitmap *copy_bitmap; + + /* Ignore BLOCK_COPY_MAX_COPY_RANGE if requested cluster_size is large= r */ uint32_t max_transfer =3D - MIN_NON_ZERO(INT_MAX, MIN_NON_ZERO(source->bs->bl.max_transfer, - target->bs->bl.max_transfer= )); + MIN_NON_ZERO(MAX(cluster_size, BLOCK_COPY_MAX_COPY_RANGE), + MIN_NON_ZERO(source->bs->bl.max_transfer, + target->bs->bl.max_transfer)); =20 copy_bitmap =3D bdrv_create_dirty_bitmap(source->bs, cluster_size, NUL= L, errp); --=20 2.21.0