From nobody Sun Feb 8 17:21:09 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=1571245865; cv=none; d=zoho.com; s=zohoarc; b=fykg5MUR2TyGQnhj3IBeuUFdgdQ3dyIG9H2kOzVydpBVJ33pPpiuVpQUAUg0Qb8VO10fyGcAItr8uIB4i/trji7LUX/EG1iYf3IddFGlbxS7B3inwWfH+DjqBUbBU94ZNevP1BnWgw7SeJjc2DKcCzbcUCaF1Ps+y9ZhwJcFIK0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1571245865; 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=b0ZvRNc+Q+POIVqMa6xHN/C5cmS5RvPcdo50O4m1pVw=; b=b88o/LYFfkh6wAxPNCLS67eWSxU7XVHc8y0UoesMMlu1W3dWVWkPo0Yq4akeLQkvT4GQYU2xya9kWdpXeokWGffY6noIbtZEJSJ65rZf7V619L2FxzPahx/5uQLDjw05C/CFoNEziKFhUvcv1fwkqWwEAevdi/oggNbtPsxVB4U= 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 1571245865193803.1892325716035; Wed, 16 Oct 2019 10:11:05 -0700 (PDT) Received: from localhost ([::1]:46003 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iKmpE-0007zO-0l for importer@patchew.org; Wed, 16 Oct 2019 13:11:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42179) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iKmnb-0005y0-V3 for qemu-devel@nongnu.org; Wed, 16 Oct 2019 13:09:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iKmna-0003UN-1W for qemu-devel@nongnu.org; Wed, 16 Oct 2019 13:09:23 -0400 Received: from relay.sw.ru ([185.231.240.75]:52720) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iKmnS-0003Pc-Ar; Wed, 16 Oct 2019 13:09:15 -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 1iKmnL-0002PI-Hz; Wed, 16 Oct 2019 20:09:08 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Subject: [PATCH v2 2/6] block/block-copy: limit copy_range_size to 16 MiB Date: Wed, 16 Oct 2019 20:09:01 +0300 Message-Id: <20191016170905.8325-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191016170905.8325-1-vsementsov@virtuozzo.com> References: <20191016170905.8325-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 22b0bd7d07..e37dfbfd03 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