From nobody Mon Feb 9 16:50:39 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.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 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1518528167280349.75876377785653; Tue, 13 Feb 2018 05:22:47 -0800 (PST) Received: from localhost ([::1]:58460 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elaXm-0007Oz-3l for importer@patchew.org; Tue, 13 Feb 2018 08:22:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33137) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elaG0-0007kS-8L for qemu-devel@nongnu.org; Tue, 13 Feb 2018 08:04:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elaFz-0006hy-54 for qemu-devel@nongnu.org; Tue, 13 Feb 2018 08:04:24 -0500 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:41484 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1elaFp-0006Rg-0b; Tue, 13 Feb 2018 08:04:13 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8B980EB6ED; Tue, 13 Feb 2018 13:04:12 +0000 (UTC) Received: from localhost (ovpn-117-34.ams2.redhat.com [10.36.117.34]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 446F5B0790; Tue, 13 Feb 2018 13:04:12 +0000 (UTC) From: Max Reitz To: qemu-block@nongnu.org Date: Tue, 13 Feb 2018 14:03:55 +0100 Message-Id: <20180213130356.8885-7-mreitz@redhat.com> In-Reply-To: <20180213130356.8885-1-mreitz@redhat.com> References: <20180213130356.8885-1-mreitz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Tue, 13 Feb 2018 13:04:12 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Tue, 13 Feb 2018 13:04:12 +0000 (UTC) for IP:'10.11.54.5' DOMAIN:'int-mx05.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'mreitz@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PATCH 6/7] sheepdog: Pass old and new size to sd_prealloc() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , sheepdog@lists.wpkg.org, Hitoshi Mitake , Jeff Cody , qemu-devel@nongnu.org, Max Reitz , Liu Yuan Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" sd_prealloc() will now preallocate the area [old_size, new_size). As before, it rounds to buf_size and may thus overshoot and preallocate areas that were not requested to be preallocated. For image creation, this is no change in behavior. For truncation, this is in accordance with the documentation for preallocated truncation. Signed-off-by: Max Reitz Reviewed-by: Eric Blake --- block/sheepdog.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/block/sheepdog.c b/block/sheepdog.c index cc1d37b3da..d300fb69c0 100644 --- a/block/sheepdog.c +++ b/block/sheepdog.c @@ -1826,14 +1826,14 @@ static int do_sd_create(BDRVSheepdogState *s, uint3= 2_t *vdi_id, int snapshot, return 0; } =20 -static int sd_prealloc(BlockDriverState *bs, Error **errp) +static int sd_prealloc(BlockDriverState *bs, int64_t old_size, int64_t new= _size, + Error **errp) { BlockBackend *blk =3D NULL; BDRVSheepdogState *base =3D bs->opaque; unsigned long buf_size; uint32_t idx, max_idx; uint32_t object_size; - int64_t vdi_size; void *buf =3D NULL; int ret; =20 @@ -1847,19 +1847,13 @@ static int sd_prealloc(BlockDriverState *bs, Error = **errp) =20 blk_set_allow_write_beyond_eof(blk, true); =20 - vdi_size =3D blk_getlength(blk); - if (vdi_size < 0) { - ret =3D vdi_size; - goto out; - } - object_size =3D (UINT32_C(1) << base->inode.block_size_shift); buf_size =3D MIN(object_size, SD_DATA_OBJ_SIZE); buf =3D g_malloc0(buf_size); =20 - max_idx =3D DIV_ROUND_UP(vdi_size, buf_size); + max_idx =3D DIV_ROUND_UP(new_size, buf_size); =20 - for (idx =3D 0; idx < max_idx; idx++) { + for (idx =3D old_size / buf_size; idx < max_idx; idx++) { /* * The created image can be a cloned image, so we need to read * a data from the source image. @@ -2119,7 +2113,7 @@ static int sd_create(const char *filename, QemuOpts *= opts, goto out; } =20 - ret =3D sd_prealloc(bs, errp); + ret =3D sd_prealloc(bs, 0, s->inode.vdi_size, errp); =20 bdrv_unref(bs); } --=20 2.14.3