From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:43441) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QCrwU-0007yE-I7 for qemu-devel@nongnu.org; Thu, 21 Apr 2011 07:21:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QCrwT-0007ym-Hd for qemu-devel@nongnu.org; Thu, 21 Apr 2011 07:21:02 -0400 Received: from mail-vw0-f45.google.com ([209.85.212.45]:34678) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QCrwT-0007yh-E3 for qemu-devel@nongnu.org; Thu, 21 Apr 2011 07:21:01 -0400 Received: by vws17 with SMTP id 17so1405331vws.4 for ; Thu, 21 Apr 2011 04:21:01 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: <1303375391-26679-1-git-send-email-ronniesahlberg@gmail.com> <20110421085026.GA4817@lst.de> <20110421090935.GA5381@lst.de> Date: Thu, 21 Apr 2011 12:21:00 +0100 Message-ID: From: Stefan Hajnoczi Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] iSCSI support for QEMU List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: ronnie sahlberg Cc: Christoph Hellwig , stefanha@linux.vnet.ibm.com, qemu-devel@nongnu.org On Thu, Apr 21, 2011 at 12:12 PM, ronnie sahlberg wrote: > On Thu, Apr 21, 2011 at 8:58 PM, Stefan Hajnoczi wro= te: >> On Thu, Apr 21, 2011 at 10:28 AM, ronnie sahlberg >> wrote: >>> On Thu, Apr 21, 2011 at 7:09 PM, Christoph Hellwig wrote: >>>> We only claim WCE=3D1 to the guest if cache=3Dwriteback or cache=3Dnon= e are >>>> set. =A0So ignoring the issue of having a cache on the initiator side >>>> you must implement stable writes for the default cache=3Dwritethrough >>>> behaviour by either seeting the FUA bit on your writes, or doing >>>> a cache flush after every write in case the target does not support FU= A. >>> >>> My target right now does such flushes for writes. >>> >>> >>> I fail to see why FUA, FUA_NV or flushes have any relevance to a test >>> that just involves reading data off the lun. >> >> I'll try to rephrase what Christoph has pointed out. >> >> When QEMU is run with cache=3Dwritethrough (default), QEMU does not >> report a write cache on the emulated disk. =A0The guest believes that >> all writes are stable because there is no disk write cache. =A0Therefore >> the guest does not need to issue synchronize cache commands ever. >> >> In order to meet these semantics with libiscsi, we would need to set >> FUA or send a synchronize cache command for every write. =A0(QEMU's >> raw-posix.c file I/O meets these semantics by opening the image file >> with O_DSYNC when cache=3Dwritethrough.) >> >>> I do not understand why my target would have data integrity problem >>> when used with libiscsi >>> but not with open-iscsi mounted lun? >> >> In the open-iscsi cache=3Dwritethrough case, QEMU's raw-posix.c opens >> the file with O_DSYNC. =A0Open-iscsi must set the FUA bit or synchronize >> cache for each write request. >> >> How does libiscsi behave in this case? > > libiscsi ignores the O_DSYNC flag. > It does not matter for two reasons: > * my target always destage to disk before replying. I.e. my target > ALWAYS write data synchronously to stable storage Does libiscsi initiator ensure this? What if I use a different target or configure it differently, will libiscsi take care to ensure the semantics are still met? > * this test we are talking about is for READ10, =A0 reads, not writes. I was not talking about a specific test. > Serioulsly, please explain, > in what exact way are write semantics and FUA bits and write destage > policy relevant here : > > sudo time dd if=3D/dev/sda of=3D/dev/null bs=3D1M > > > I seriously do not understand. Please educate me. Write semantics are completely independent of this dd read example. Stefan