From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53282) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c4TGN-0001jh-48 for qemu-devel@nongnu.org; Wed, 09 Nov 2016 08:50:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c4TGJ-0004ew-98 for qemu-devel@nongnu.org; Wed, 09 Nov 2016 08:50:03 -0500 Date: Wed, 9 Nov 2016 13:49:55 +0000 From: Stefan Hajnoczi Message-ID: <20161109134955.GA31111@stefanha-x1.localdomain> References: <1478645535-21236-1-git-send-email-eblake@redhat.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="Dxnq1zWXvFF0Q93v" Content-Disposition: inline In-Reply-To: <1478645535-21236-1-git-send-email-eblake@redhat.com> 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: Eric Blake 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" --Dxnq1zWXvFF0Q93v Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable 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. >=20 > 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. >=20 > Test case: >=20 > $ 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 Please include a qemu-iotests test case to protect against regressions. Thanks, Stefan --Dxnq1zWXvFF0Q93v Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEcBAEBAgAGBQJYIymCAAoJEJykq7OBq3PIu0MIAIRkoi1LNOkNTfIPeFycAYyI 9pRhbaWYYk7PKZB+1OxercwAzAhVjJ2rvTYPwPxwTIpJAE1C+ddMajlpDW3+FDQj Lm2Cz3ifuepRQ8NLqYB4OsL8HYUqd+5TxKXvX+jBVc01kshq1iQvYYItQiGs1UXy cu/Ak9fXe8Z98vRdYKaM8WfaQjOZ9Ji9hpgMkDP/daxZNabHjaamCcrVX2xyZYS/ hsZ6kC5lRtmPEKbOIaip3IGPQG8Yo1UTcSouldlxLx1yKP6togFJ1KhIW9zxlwLG ejDCxCoDtCMOItHKbS1m8C5Al5mN/OSPH/itB+L8DcjdhvRoPuk8MMwxjeQgZ48= =VoMd -----END PGP SIGNATURE----- --Dxnq1zWXvFF0Q93v--