From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51950) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bO7fX-0000Kb-69 for qemu-devel@nongnu.org; Fri, 15 Jul 2016 14:17:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bO7fS-0002BJ-3t for qemu-devel@nongnu.org; Fri, 15 Jul 2016 14:16:58 -0400 References: <1468499383-17840-1-git-send-email-den@openvz.org> <1468499383-17840-4-git-send-email-den@openvz.org> <5787B83C.5020306@redhat.com> <578899F3.3080605@virtuozzo.com> <57891C2D.5010004@redhat.com> From: Evgeny Yakovlev Message-ID: <5789210A.5050301@virtuozzo.com> Date: Fri, 15 Jul 2016 20:44:42 +0300 MIME-Version: 1.0 In-Reply-To: <57891C2D.5010004@redhat.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v6 3/6] tests: in IDE and AHCI tests perform DMA write before flushing List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake , "Denis V. Lunev" , qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: Kevin Wolf , Fam Zheng , Max Reitz , Stefan Hajnoczi , John Snow On 15.07.2016 20:23, Eric Blake wrote: > On 07/15/2016 02:08 AM, Evgeny Yakovlev wrote: > >>>> + * Write sector 0 with random data to make AHCI storage dirty >>> If we ever have a case where we open a disk without specifying -raw, the >>> random data _might_ resemble some other format and cause probe to >>> misbehave; as such, we also have code in the block layer that >>> specifically prevents writes to sector 0 for some data. Should you pick >>> a different sector than 0, so as to avoid any (remote) possibility that >>> the random data could change probe results or be rejected? >>> >> Not sure if i understand the problem you're referring to here. Those are >> blkdebug tests, those disks are created, emulated with blkdebug backend, >> flushed and then thrown away. So is there really any possibility for >> reopening the image and accidentally parsing a partition table in sector 0? >> >> Also, not sure what you mean by "code in the block layer that >> specifically prevents writes to sector 0 for some data". Can you explain >> that bit, because it sounds pretty scary. How can we deny guest VM to >> write anything to sector 0 on its emulated disk? > Read block/raw_bsd.c:raw_co_writev_flags() for the gory details. If the > guest ever gets a raw format driver because the user forgot to say > '--format $foo', then we prevent the guest from writing anything into > sector 0 that would be probed as non-raw. It means there are only a > handful of patterns that the guest cannot write into the first sector, > but it IS a non-zero number of patterns. How the guest behaves if such > a write is attempted depends on the error policy you have on that > device; it might show up as an EIO error to the guest, or it might stop > the guest from executing and raise a qemu event to the management > application, but the point is that we actively prohibit some writes to > sector 0 on a probed raw disk. Using any sector other than 0 doesn't > have this limitation, or you can ensure that your test ALWAYS passes the > appropriate --format $foo so that the disk is never probed as another > way to avoid limitations on sector 0. > > I think i get it now. Thanks!