From nobody Mon May 6 12:54:40 2024 Delivered-To: importer2@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+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1622136142; cv=none; d=zohomail.com; s=zohoarc; b=he2H5kEXh68Pu3Ob1GOQk8oUDBWdL8QkDTiP7+EOn4PRGofOHVevLpot1MvXgu+nJeUC7HrlBpj2bh4fBipnQPqU+e9j65jgwz+mN4Bqs313I31VVj5WbSfvV/VzQ9qhWhAkASM7IQ5kkLhPfVcZwXMt36jSjbG8e6Y8Oqf508w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1622136142; h=Content-Type: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=0pvVBxApMQZM2MvhAEFSpgr5BtEmxJ1HLWevFGZ4fwg=; b=E6P01ncUheyppQppk6D/fWuSG2pXN04AoNEcDVmJfBAtqrfriAs1u1ZFC+XWXuOEotmUITiaum+FasZBDMtzSVIeHTvVgScRVXVOIg+iYI9tlNQ9708M7PUlGw005olf8CZsLuogWq3Qs58CPu2uHwXj43Henb9hRbtkIA0Pqfo= ARC-Authentication-Results: i=1; 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+importer2=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 1622136142728137.40666708724495; Thu, 27 May 2021 10:22:22 -0700 (PDT) Received: from localhost ([::1]:52560 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lmJi9-0000yj-Hq for importer2@patchew.org; Thu, 27 May 2021 13:22:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52068) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lmJgR-0007AV-A3 for qemu-devel@nongnu.org; Thu, 27 May 2021 13:20:35 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:36745) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lmJgN-0004ny-Ij for qemu-devel@nongnu.org; Thu, 27 May 2021 13:20:34 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-152-v06S0n6lOxGghZb1KQY7sg-1; Thu, 27 May 2021 13:20:28 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id AA71B8030A1; Thu, 27 May 2021 17:20:27 +0000 (UTC) Received: from thuth.com (ovpn-112-76.ams2.redhat.com [10.36.112.76]) by smtp.corp.redhat.com (Postfix) with ESMTP id 811A6687FB; Thu, 27 May 2021 17:20:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1622136030; 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: in-reply-to:in-reply-to:references:references; bh=0pvVBxApMQZM2MvhAEFSpgr5BtEmxJ1HLWevFGZ4fwg=; b=WrBpRycSeJPAVUy4FJ9q6g/r2I2xVRvm9hjj/UowLIBa+i2LRISlX7WLPurfnx2Bk6ppHF L3rYugSmuhakTL6nTTtHKTUVvZm/6pRV3Uzi+t91g7THik+cyNB2vuzokbYaD/M9EF2wqE D329HHT38CznXZZ3OJOmIGehtd/5P8M= X-MC-Unique: v06S0n6lOxGghZb1KQY7sg-1 From: Thomas Huth To: qemu-block@nongnu.org, Kevin Wolf , Max Reitz Subject: [PATCH 1/2] block/file-posix: Fix problem with fallocate(PUNCH_HOLE) on GPFS Date: Thu, 27 May 2021 19:20:19 +0200 Message-Id: <20210527172020.847617-2-thuth@redhat.com> In-Reply-To: <20210527172020.847617-1-thuth@redhat.com> References: <20210527172020.847617-1-thuth@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=thuth@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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=thuth@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.374, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: Andrey Shinkevich , Viktor Mihajlovski , qemu-devel@nongnu.org, Christian Borntraeger Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" A customer reported that running qemu-img convert -t none -O qcow2 -f qcow2 input.qcow2 output.qcow2 fails for them with the following error message when the images are stored on a GPFS file system : qemu-img: error while writing sector 0: Invalid argument After analyzing the strace output, it seems like the problem is in handle_aiocb_write_zeroes(): The call to fallocate(FALLOC_FL_PUNCH_HOLE) returns EINVAL, which can apparently happen if the file system has a different idea of the granularity of the operation. It's arguably a bug in GPFS, since the PUNCH_HOLE mode should not result in EINVAL according to the man-page of fallocate(), but the file system is out there in production and so we have to deal with it. In commit 294682cc3a ("block: workaround for unaligned byte range in fallocate()") we also already applied the a work-around for the same problem to the earlier fallocate(FALLOC_FL_ZERO_RANGE) call, so do it now similar with the PUNCH_HOLE call. But instead of silently catching and returning -ENOTSUP (which causes the caller to fall back to writing zeroes), let's rather inform the user once about the buggy file system and try the other fallback instead. Signed-off-by: Thomas Huth --- block/file-posix.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/block/file-posix.c b/block/file-posix.c index 10b71d9a13..134ff01d82 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -1650,6 +1650,16 @@ static int handle_aiocb_write_zeroes(void *opaque) return ret; } s->has_fallocate =3D false; + } else if (ret =3D=3D -EINVAL) { + /* + * Some file systems like older versions of GPFS do not like u= n- + * aligned byte ranges, and return EINVAL in such a case, thou= gh + * they should not do it according to the man-page of fallocat= e(). + * Warn about the bad filesystem and try the final fallback in= stead. + */ + warn_report_once("Your file system is misbehaving: " + "fallocate(FALLOC_FL_PUNCH_HOLE) returned EIN= VAL. " + "Please report this bug to your file sytem ve= ndor."); } else if (ret !=3D -ENOTSUP) { return ret; } else { --=20 2.27.0 From nobody Mon May 6 12:54:40 2024 Delivered-To: importer2@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+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1622136170; cv=none; d=zohomail.com; s=zohoarc; b=E9mOkf1jKfswAPHcJjRZYIWpnrR5iZiI+BQpZA8db77driTHWV9Jk7kS9NEI1ntWoJob5Bhr24t7rw/4MF5om0WiUBrnYgumMoFRcSsmQHMNuei0HMRfYtgRNImVOI/IAX4iz6Wx0p0BT5xmPv+CDB+434tsVyZmOIhDut3O6Fg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1622136170; h=Content-Type: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=lXUmlBTMsiiuFXMdYtSCMSStnaQPkRXDY4eEYAzaYfs=; b=BhSzksiN7HBL2XVN8UvAHISrsAB1bJHP72vkgx+JYAMTqWWemEiD0U/j4+nHbfkxvDtZ4aDTugRimySDJaeb3EwlP7W2txxH38taazmiec02+fLQo+oeZcZZejjFZzwUVe6b2D5W6124bc/5Nu6C74vGBohrCG+z3zKUhH0omdQ= ARC-Authentication-Results: i=1; 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+importer2=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 1622136170560760.9387613104736; Thu, 27 May 2021 10:22:50 -0700 (PDT) Received: from localhost ([::1]:53256 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lmJib-0001Td-9E for importer2@patchew.org; Thu, 27 May 2021 13:22:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52110) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lmJgS-0007Bt-Tt for qemu-devel@nongnu.org; Thu, 27 May 2021 13:20:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:21853) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lmJgR-0004qo-5t for qemu-devel@nongnu.org; Thu, 27 May 2021 13:20:36 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-238-00M04-P0NPCaR0zvSKya4g-1; Thu, 27 May 2021 13:20:31 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 09B971858ED2; Thu, 27 May 2021 17:20:30 +0000 (UTC) Received: from thuth.com (ovpn-112-76.ams2.redhat.com [10.36.112.76]) by smtp.corp.redhat.com (Postfix) with ESMTP id 15D6960864; Thu, 27 May 2021 17:20:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1622136034; 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: in-reply-to:in-reply-to:references:references; bh=lXUmlBTMsiiuFXMdYtSCMSStnaQPkRXDY4eEYAzaYfs=; b=CYX58U/pO+zlrsy6hL+rK3Q95en+qL8WMp9blP9fO2BGd3P2xK/0Omc6GzYtEEr22gst6P XQn0qzn1x8S+9+UKWioefjKmXla7Pbq5KA6A6qGvrjztc9Y/TgfnsBUi8njItMF+VQAc+8 tr8g0qdZfUvAgekIovFfEup8QfxP78k= X-MC-Unique: 00M04-P0NPCaR0zvSKya4g-1 From: Thomas Huth To: qemu-block@nongnu.org, Kevin Wolf , Max Reitz Subject: [PATCH 2/2] block/file-posix: Try other fallbacks after invalid FALLOC_FL_ZERO_RANGE Date: Thu, 27 May 2021 19:20:20 +0200 Message-Id: <20210527172020.847617-3-thuth@redhat.com> In-Reply-To: <20210527172020.847617-1-thuth@redhat.com> References: <20210527172020.847617-1-thuth@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=thuth@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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=thuth@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.374, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action 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: Andrey Shinkevich , Viktor Mihajlovski , qemu-devel@nongnu.org, Christian Borntraeger Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" If fallocate(... FALLOC_FL_ZERO_RANGE ...) returns EINVAL, it's likely an indication that the file system is buggy and does not implement unaligned accesses right. We still might be lucky with the other fallback fallocate() calls later in this function, though, so we should not return immediately and try the others first. Since FALLOC_FL_ZERO_RANGE could also return EINVAL if the file descriptor is not a regular file, we ignore this filesystem bug silently, without printing an error message for the user. Signed-off-by: Thomas Huth --- block/file-posix.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/block/file-posix.c b/block/file-posix.c index 134ff01d82..a96b6fa8fb 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -1625,17 +1625,17 @@ static int handle_aiocb_write_zeroes(void *opaque) if (s->has_write_zeroes) { int ret =3D do_fallocate(s->fd, FALLOC_FL_ZERO_RANGE, aiocb->aio_offset, aiocb->aio_nbytes); - if (ret =3D=3D -EINVAL) { - /* - * Allow falling back to pwrite for file systems that - * do not support fallocate() for an unaligned byte range. - */ - return -ENOTSUP; - } - if (ret =3D=3D 0 || ret !=3D -ENOTSUP) { + if (ret =3D=3D -ENOTSUP) { + s->has_write_zeroes =3D false; + } else if (ret =3D=3D 0 || ret !=3D -EINVAL) { return ret; } - s->has_write_zeroes =3D false; + /* + * Note: Some file systems do not like unaligned byte ranges, and + * return EINVAL in such a case, though they should not do it acco= rding + * to the man-page of fallocate(). Thus we simply ignore this retu= rn + * value and try the other fallbacks instead. + */ } #endif =20 --=20 2.27.0