* Re: [Qemu-devel] [Xen-devel] [PATCH] xen_disk: implement BLKIF_OP_FLUSH_DISKCACHE, remove BLKIF_OP_WRITE_BARRIER [not found] ` <20120426154101.GD26830@phenom.dumpdata.com> @ 2012-05-09 12:42 ` Stefano Stabellini 2012-12-19 18:46 ` Konrad Rzeszutek Wilk 0 siblings, 1 reply; 3+ messages in thread From: Stefano Stabellini @ 2012-05-09 12:42 UTC (permalink / raw) To: Konrad Rzeszutek Wilk Cc: kwolf@redhat.com, xen-devel@lists.xensource.com, Ian Campbell, Stefano Stabellini, qemu-devel@nongnu.org, Christoph Hellwig On Thu, 26 Apr 2012, Konrad Rzeszutek Wilk wrote: > On Wed, Apr 25, 2012 at 01:23:35PM +0200, Christoph Hellwig wrote: > > On Wed, Apr 25, 2012 at 12:21:53PM +0100, Stefano Stabellini wrote: > > > That is true, in fact I couldn't figure out what I had to implement just > > > reading the comment. So I went through the blkback code and tried to > > > understand what I had to do, but I got it wrong. > > > > > > Reading the code again it seems to me that BLKIF_OP_FLUSH_DISKCACHE > > > is supposed to have the same semantics as REQ_FLUSH, that implies a > > > preflush if nr_segments > 0, not a postflush like I did. > > > > It's worse - blkfront translates both a REQ_FLUSH or a REQ_FUA > > into BLKIF_OP_FLUSH_DISKCACHE. > > I think that is what remained of the BARRIER request. > > > > REQ_FLUSH either is a pre flush or a pure flush without a data transfer, > > and REQ_FUA is a post flush. So to get the proper semantics you'll have > > to do both, _and_ sequence it so that no operation starts before the > > previous one finished. > > If I were to emulate the SCSI SYNC command which one would it be? > > I think REQ_FLUSH? In which I would think that the blkfront needs to > get rid of the REQ_FUA part? > ping? ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [Xen-devel] [PATCH] xen_disk: implement BLKIF_OP_FLUSH_DISKCACHE, remove BLKIF_OP_WRITE_BARRIER 2012-05-09 12:42 ` [Qemu-devel] [Xen-devel] [PATCH] xen_disk: implement BLKIF_OP_FLUSH_DISKCACHE, remove BLKIF_OP_WRITE_BARRIER Stefano Stabellini @ 2012-12-19 18:46 ` Konrad Rzeszutek Wilk 2013-01-09 18:44 ` Stefano Stabellini 0 siblings, 1 reply; 3+ messages in thread From: Konrad Rzeszutek Wilk @ 2012-12-19 18:46 UTC (permalink / raw) To: Stefano Stabellini Cc: kwolf@redhat.com, xen-devel@lists.xensource.com, Christoph Hellwig, Ian Campbell, qemu-devel@nongnu.org On Wed, May 09, 2012 at 01:42:41PM +0100, Stefano Stabellini wrote: > On Thu, 26 Apr 2012, Konrad Rzeszutek Wilk wrote: > > On Wed, Apr 25, 2012 at 01:23:35PM +0200, Christoph Hellwig wrote: > > > On Wed, Apr 25, 2012 at 12:21:53PM +0100, Stefano Stabellini wrote: > > > > That is true, in fact I couldn't figure out what I had to implement just > > > > reading the comment. So I went through the blkback code and tried to > > > > understand what I had to do, but I got it wrong. > > > > > > > > Reading the code again it seems to me that BLKIF_OP_FLUSH_DISKCACHE > > > > is supposed to have the same semantics as REQ_FLUSH, that implies a > > > > preflush if nr_segments > 0, not a postflush like I did. > > > > > > It's worse - blkfront translates both a REQ_FLUSH or a REQ_FUA > > > into BLKIF_OP_FLUSH_DISKCACHE. > > > > I think that is what remained of the BARRIER request. > > > > > > REQ_FLUSH either is a pre flush or a pure flush without a data transfer, > > > and REQ_FUA is a post flush. So to get the proper semantics you'll have > > > to do both, _and_ sequence it so that no operation starts before the > > > previous one finished. > > > > If I were to emulate the SCSI SYNC command which one would it be? > > > > I think REQ_FLUSH? In which I would think that the blkfront needs to > > get rid of the REQ_FUA part? > > > > ping? And just shy of 7 months later I answer :-) I think you are right. Getting rid of REQ_FUA looks like the right way. Oh, and blkfront already does that! 1290 err = xenbus_gather(XBT_NIL, info->xbdev->otherend, 1291 "feature-flush-cache", "%d", &flush, 1292 NULL); 1293 1294 if (!err && flush) { 1295 info->feature_flush = REQ_FLUSH; 1296 info->flush_op = BLKIF_OP_FLUSH_DISKCACHE; 1297 } 1298 So what I am missing? > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [Xen-devel] [PATCH] xen_disk: implement BLKIF_OP_FLUSH_DISKCACHE, remove BLKIF_OP_WRITE_BARRIER 2012-12-19 18:46 ` Konrad Rzeszutek Wilk @ 2013-01-09 18:44 ` Stefano Stabellini 0 siblings, 0 replies; 3+ messages in thread From: Stefano Stabellini @ 2013-01-09 18:44 UTC (permalink / raw) To: Konrad Rzeszutek Wilk Cc: kwolf@redhat.com, xen-devel@lists.xensource.com, Ian Campbell, Stefano Stabellini, qemu-devel@nongnu.org, Christoph Hellwig On Wed, 19 Dec 2012, Konrad Rzeszutek Wilk wrote: > On Wed, May 09, 2012 at 01:42:41PM +0100, Stefano Stabellini wrote: > > On Thu, 26 Apr 2012, Konrad Rzeszutek Wilk wrote: > > > On Wed, Apr 25, 2012 at 01:23:35PM +0200, Christoph Hellwig wrote: > > > > On Wed, Apr 25, 2012 at 12:21:53PM +0100, Stefano Stabellini wrote: > > > > > That is true, in fact I couldn't figure out what I had to implement just > > > > > reading the comment. So I went through the blkback code and tried to > > > > > understand what I had to do, but I got it wrong. > > > > > > > > > > Reading the code again it seems to me that BLKIF_OP_FLUSH_DISKCACHE > > > > > is supposed to have the same semantics as REQ_FLUSH, that implies a > > > > > preflush if nr_segments > 0, not a postflush like I did. > > > > > > > > It's worse - blkfront translates both a REQ_FLUSH or a REQ_FUA > > > > into BLKIF_OP_FLUSH_DISKCACHE. > > > > > > I think that is what remained of the BARRIER request. > > > > > > > > REQ_FLUSH either is a pre flush or a pure flush without a data transfer, > > > > and REQ_FUA is a post flush. So to get the proper semantics you'll have > > > > to do both, _and_ sequence it so that no operation starts before the > > > > previous one finished. > > > > > > If I were to emulate the SCSI SYNC command which one would it be? > > > > > > I think REQ_FLUSH? In which I would think that the blkfront needs to > > > get rid of the REQ_FUA part? > > > > > > > ping? > > And just shy of 7 months later I answer :-) > > I think you are right. Getting rid of REQ_FUA looks like the > right way. Oh, and blkfront already does that! > > 1290 err = xenbus_gather(XBT_NIL, info->xbdev->otherend, > 1291 "feature-flush-cache", "%d", &flush, > 1292 NULL); > 1293 > 1294 if (!err && flush) { > 1295 info->feature_flush = REQ_FLUSH; > 1296 info->flush_op = BLKIF_OP_FLUSH_DISKCACHE; > 1297 } > 1298 > > So what I am missing? Nothing, thanks. I have updated and resent the patch, fixing the implementation of BLKIF_OP_FLUSH_DISKCACHE. ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-01-09 18:44 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <1334595957-12552-1-git-send-email-stefano.stabellini@eu.citrix.com> [not found] ` <20120425084524.GA17537@lst.de> [not found] ` <1335344565.28015.7.camel@zakaz.uk.xensource.com> [not found] ` <20120425102024.GA19800@lst.de> [not found] ` <alpine.DEB.2.00.1204251213480.26786@kaball-desktop> [not found] ` <20120425112335.GA20868@lst.de> [not found] ` <20120426154101.GD26830@phenom.dumpdata.com> 2012-05-09 12:42 ` [Qemu-devel] [Xen-devel] [PATCH] xen_disk: implement BLKIF_OP_FLUSH_DISKCACHE, remove BLKIF_OP_WRITE_BARRIER Stefano Stabellini 2012-12-19 18:46 ` Konrad Rzeszutek Wilk 2013-01-09 18:44 ` Stefano Stabellini
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).