From nobody Tue Feb 10 00:24:08 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1647534683422139.1691310041807; Thu, 17 Mar 2022 09:31:23 -0700 (PDT) Received: from localhost ([::1]:60364 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nUt23-0003DN-NJ for importer@patchew.org; Thu, 17 Mar 2022 12:31:23 -0400 Received: from eggs.gnu.org ([209.51.188.92]:34308) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nUsxc-0007yb-Vt for qemu-devel@nongnu.org; Thu, 17 Mar 2022 12:26:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]:29600) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nUsxa-0004Aq-0i for qemu-devel@nongnu.org; Thu, 17 Mar 2022 12:26:48 -0400 Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-455-YrtJx5Q9PCKreDHy2uy_sQ-1; Thu, 17 Mar 2022 12:26:44 -0400 Received: by mail-qk1-f198.google.com with SMTP id a66-20020ae9e845000000b0067b308a9f56so3647676qkg.21 for ; Thu, 17 Mar 2022 09:26:44 -0700 (PDT) Received: from step1.redhat.com (host-87-12-25-126.business.telecomitalia.it. [87.12.25.126]) by smtp.gmail.com with ESMTPSA id v1-20020a05620a440100b0067d3fc2eaa6sm2869986qkp.96.2022.03.17.09.26.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Mar 2022 09:26:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1647534405; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XRZzgPg79a1cSzBOAwtxcS65FO1PtFFdg/W31XKMDNQ=; b=IBLEsT97Ep39Pl3sh5z7RKJbW0Evvri5zBhpcfJJg4B1XoQ+MUhs9ghOzhLwEYk9O8Q2Rc RC/miY1lrQdlzSz6FzmCN0xp9EkiqXckHeRrRGeIxcM711N8ol3nzcTen8oui0/tYVWoQ3 MMaNjJU2aIPIZSp8njO7uh0BK8Wcsvk= X-MC-Unique: YrtJx5Q9PCKreDHy2uy_sQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=XRZzgPg79a1cSzBOAwtxcS65FO1PtFFdg/W31XKMDNQ=; b=LQrl6Xys//J+p8Xu0aU7VfYPRKLmi/1JVGZq6JXdQPgP2ckwrhTJegR2mfo3nQ2rGy JrNNAnUDTbTGsXhANsKMhyvM3xOVPuH9EnMmlb/oAOfTSfhnPnbs1HQtMMbn7Fo+OvY5 EjXPX5xwVS2gBfqNsvCh2AIzODV6J4B3n/uoX1r7M5PUJ6/imGpiqeFfeao+wgOWqfvl nBk5u+Wn7rAUraulFqEh0BVAmZHYg8SwJujM9SCxVwFHltqj5TZpYjVVsxn6NXajytIe m8suwYCFliicVYRuxEtuowTBc7S7b0K99wagJcR/ciXsoSnnRGESSIIiG6Re1T77ADe+ 7acA== X-Gm-Message-State: AOAM532ZCSl5KwlFPn/xeKNCAvxrJgPpbWaJWN1B1a4hi0II1xLfHCUi xXs+0fwdggk4D2DGwM/IoIxyeG+rQeP2UDHjKgxU7MoagYVTGCyaxnPmuXHzNEGkr+GDKOntuoW uBU0ttRRMawh/S2hR7F9XczfApT58+WXspoLXNpJNwt0qHEvDaOYXPWBrnhBao8psiPM= X-Received: by 2002:a05:622a:145:b0:2e1:b932:d019 with SMTP id v5-20020a05622a014500b002e1b932d019mr4394267qtw.46.1647534403229; Thu, 17 Mar 2022 09:26:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxCKGDFTut7aUgL8Jl4CNUOKDRRcin0aE71dn3+WOGshQh2v19UTcqJGPV7WP0LFxbij30TJg== X-Received: by 2002:a05:622a:145:b0:2e1:b932:d019 with SMTP id v5-20020a05622a014500b002e1b932d019mr4394240qtw.46.1647534402763; Thu, 17 Mar 2022 09:26:42 -0700 (PDT) From: Stefano Garzarella To: qemu-devel@nongnu.org Subject: [PATCH] block/rbd: fix write zeroes with growing images Date: Thu, 17 Mar 2022 17:26:38 +0100 Message-Id: <20220317162638.41192-1-sgarzare@redhat.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=sgarzare@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=sgarzare@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -21 X-Spam_score: -2.2 X-Spam_bar: -- X-Spam_report: (-2.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.082, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , qemu-block@nongnu.org, Peter Lieven , Hanna Reitz , Ilya Dryomov , Stefano Garzarella Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1647534713983100001 Content-Type: text/plain; charset="utf-8" Commit d24f80234b ("block/rbd: increase dynamically the image size") added a workaround to support growing images (eg. qcow2), resizing the image before write operations that exceed the current size. We recently added support for write zeroes and without the workaround we can have problems with qcow2. So let's move the resize into qemu_rbd_start_co() and do it when the command is RBD_AIO_WRITE or RBD_AIO_WRITE_ZEROES. Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=3D2020993 Fixes: c56ac27d2a ("block/rbd: add write zeroes support") Signed-off-by: Stefano Garzarella Reviewed-by: Ilya Dryomov --- block/rbd.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/block/rbd.c b/block/rbd.c index 8f183eba2a..6caf35cbba 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -1107,6 +1107,20 @@ static int coroutine_fn qemu_rbd_start_co(BlockDrive= rState *bs, =20 assert(!qiov || qiov->size =3D=3D bytes); =20 + if (cmd =3D=3D RBD_AIO_WRITE || cmd =3D=3D RBD_AIO_WRITE_ZEROES) { + /* + * RBD APIs don't allow us to write more than actual size, so in o= rder + * to support growing images, we resize the image before write + * operations that exceed the current size. + */ + if (offset + bytes > s->image_size) { + int r =3D qemu_rbd_resize(bs, offset + bytes); + if (r < 0) { + return r; + } + } + } + r =3D rbd_aio_create_completion(&task, (rbd_callback_t) qemu_rbd_completion_cb,= &c); if (r < 0) { @@ -1182,18 +1196,6 @@ coroutine_fn qemu_rbd_co_pwritev(BlockDriverState *b= s, int64_t offset, int64_t bytes, QEMUIOVector *qiov, BdrvRequestFlags flags) { - BDRVRBDState *s =3D bs->opaque; - /* - * RBD APIs don't allow us to write more than actual size, so in order - * to support growing images, we resize the image before write - * operations that exceed the current size. - */ - if (offset + bytes > s->image_size) { - int r =3D qemu_rbd_resize(bs, offset + bytes); - if (r < 0) { - return r; - } - } return qemu_rbd_start_co(bs, offset, bytes, qiov, flags, RBD_AIO_WRITE= ); } =20 --=20 2.35.1