From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37947) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c4Z8a-0002z1-49 for qemu-devel@nongnu.org; Wed, 09 Nov 2016 15:06:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c4Z8Z-0002pu-4U for qemu-devel@nongnu.org; Wed, 09 Nov 2016 15:06:24 -0500 References: <1478645535-21236-1-git-send-email-eblake@redhat.com> <20161109134955.GA31111@stefanha-x1.localdomain> From: Eric Blake Message-ID: <86e5faa1-2360-c8c7-b531-6a1a72ee7116@redhat.com> Date: Wed, 9 Nov 2016 14:06:13 -0600 MIME-Version: 1.0 In-Reply-To: <20161109134955.GA31111@stefanha-x1.localdomain> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="uUrtut2jcdTeA1if63q478qWoWAxdCnH7" Subject: Re: [Qemu-devel] [Qemu-block] [PATCH for-2.8] block: Let write zeroes fallback work even with small max_transfer List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: qemu-devel@nongnu.org, Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, qemu-stable@nongnu.org, Max Reitz , Ed Swierk , Stefan Hajnoczi , "Denis V . Lunev" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --uUrtut2jcdTeA1if63q478qWoWAxdCnH7 From: Eric Blake To: Stefan Hajnoczi Cc: qemu-devel@nongnu.org, Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, qemu-stable@nongnu.org, Max Reitz , Ed Swierk , Stefan Hajnoczi , "Denis V . Lunev" Message-ID: <86e5faa1-2360-c8c7-b531-6a1a72ee7116@redhat.com> Subject: Re: [Qemu-block] [PATCH for-2.8] block: Let write zeroes fallback work even with small max_transfer References: <1478645535-21236-1-git-send-email-eblake@redhat.com> <20161109134955.GA31111@stefanha-x1.localdomain> In-Reply-To: <20161109134955.GA31111@stefanha-x1.localdomain> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 11/09/2016 07:49 AM, Stefan Hajnoczi wrote: > On Tue, Nov 08, 2016 at 04:52:15PM -0600, Eric Blake wrote: >> Commit 443668ca rewrote the write_zeroes logic to guarantee that >> an unaligned request never crosses a cluster boundary. But >> in the rewrite, the new code assumed that at most one iteration >> would be needed to get to an alignment boundary. >> >> However, it is easy to trigger an assertion failure: the Linux >> kernel limits loopback devices to advertise a max_transfer of >> only 64k. Any operation that requires falling back to writes >> rather than more efficient zeroing must obey max_transfer during >> that fallback, which means an unaligned head may require multiple >> iterations of the write fallbacks before reaching the aligned >> boundaries, when layering a format with clusters larger than 64k >> atop the protocol of file access to a loopback device. >> >> Test case: >> >> $ qemu-img create -f qcow2 -o cluster_size=3D1M file 10M >> $ losetup /dev/loop2 /path/to/file >> $ qemu-io -f qcow2 /dev/loop2 >> qemu-io> w 7m 1k >> qemu-io> w -z 8003584 2093056 >=20 > Please include a qemu-iotests test case to protect against regressions.= None of the existing qemu-iotests use losetup; I guess the closest thing to do is crib from a test that uses passwordless sudo? It will certainly be a separate commit, but I'll give it my best shot to post something soon. --=20 Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org --uUrtut2jcdTeA1if63q478qWoWAxdCnH7 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Public key at http://people.redhat.com/eblake/eblake.gpg Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBCAAGBQJYI4G1AAoJEKeha0olJ0NqXgsIAJnltmmc0KMTkQybb7YtyDVb OhyIa/sFooG3C9foQLvdywoEIuh9/+/G0X+ByYw44rXQdFaSavmAJTpPPx7DfJok O2CW5P9kFjTCobRALnseUTcOfQ7ZreJF6OMw0QgHRaN/N8pJarE3xHhqTiq/cQ2i 09wdmoESsdy1kZds2/sVSMSP2N9GOP90zjnL5epdeMwrbwGoVK4UwINSCDpeJAaI iNOguhZ6xAiLxeaahWerqqu64ZEMcr2kxCY1Lfjk67QiTe8GzQhGq1MrRdqi77u+ EGzabxVNcsGBOspvH6ln+Ltwsk4p3b2byZbGBTykIiBWWoW7Q685Xa/DhSnpLnQ= =4usR -----END PGP SIGNATURE----- --uUrtut2jcdTeA1if63q478qWoWAxdCnH7--