>>I wonder if this couldn't be fixed directly in rbd.c block driver I have send a patch, can you test ?
----- Mail original ----- De: "aderumier" <aderum...@odiso.com> À: "pve-devel" <pve-devel@pve.proxmox.com> Envoyé: Mardi 26 Juillet 2016 16:46:58 Objet: Re: [pve-devel] [PATCH] Add patch to improve qmrestore to RBD, activating writeback cache. I wonder if this couldn't be fixed directly in rbd.c block driver currently: block/rbd.c if (flags & BDRV_O_NOCACHE) { rados_conf_set(s->cluster, "rbd_cache", "false"); } else { rados_conf_set(s->cluster, "rbd_cache", "true"); } and in block.c int bdrv_parse_cache_mode(const char *mode, int *flags, bool *writethrough) { *flags &= ~BDRV_O_CACHE_MASK; if (!strcmp(mode, "off") || !strcmp(mode, "none")) { *writethrough = false; *flags |= BDRV_O_NOCACHE; } else if (!strcmp(mode, "directsync")) { *writethrough = true; *flags |= BDRV_O_NOCACHE; } else if (!strcmp(mode, "writeback")) { *writethrough = false; } else if (!strcmp(mode, "unsafe")) { *writethrough = false; *flags |= BDRV_O_NO_FLUSH; } else if (!strcmp(mode, "writethrough")) { *writethrough = true; } else { return -1; } return 0; } as in qemu-img convert we don't send flush and in vma restore too, we use BDRV_O_NO_FLUSH. I think we should add in rbd.c something like if (flags & BDRV_O_NOCACHE) { rados_conf_set(s->cluster, "rbd_cache", "false"); } else { rados_conf_set(s->cluster, "rbd_cache", "true"); } + if (flags & BDRV_O_NO_FLUSH) { + rados_conf_set(s->cluster, "rbd_cache_writethrough_until_flush", "false"); + } I really think it's the right way (or it's impossible to use unsafe cache option) and could be pushed to qemu upsteam. ----- Mail original ----- De: "Eneko Lacunza" <elacu...@binovo.es> À: "pve-devel" <pve-devel@pve.proxmox.com> Envoyé: Mardi 26 Juillet 2016 16:05:52 Objet: Re: [pve-devel] [PATCH] Add patch to improve qmrestore to RBD, activating writeback cache. Hi, I'm unsure about wether it would be better to have one patch or two independent patches? El 26/07/16 a las 16:02, Alexandre DERUMIER escribió: > Hi, > > I think that qemu-img convert have the same problem > > I have found a commit from 2015 > https://git.greensocs.com/fkonrad/mttcg/commit/80ccf93b884a2edab5ec62634758e942bba81b7c > > > By default it don't send flush (cache=unsafe), and the commit add a flush on > image closing, because some storage like sheepdog, > can't do the flush by themself. > > maybe can we add the same flush just after the opening in convert. > > > > ----- Mail original ----- > De: "Eneko Lacunza" <elacu...@binovo.es> > À: "pve-devel" <pve-devel@pve.proxmox.com> > Cc: "Eneko Lacunza" <elacu...@pve-test.binovo.net> > Envoyé: Mardi 26 Juillet 2016 15:18:55 > Objet: [pve-devel] [PATCH] Add patch to improve qmrestore to RBD, activating > writeback cache. > > From: Eneko Lacunza <elacu...@pve-test.binovo.net> > > Signed-off-by: Eneko Lacunza <elacu...@pve-test.binovo.net> > --- > .../0054-vma-force-enable-rbd-cache-for-qmrestore.patch | 17 > +++++++++++++++++ > debian/patches/series | 1 + > 2 files changed, 18 insertions(+) > create mode 100644 > debian/patches/pve/0054-vma-force-enable-rbd-cache-for-qmrestore.patch > > diff --git > a/debian/patches/pve/0054-vma-force-enable-rbd-cache-for-qmrestore.patch > b/debian/patches/pve/0054-vma-force-enable-rbd-cache-for-qmrestore.patch > new file mode 100644 > index 0000000..d9722c7 > --- /dev/null > +++ b/debian/patches/pve/0054-vma-force-enable-rbd-cache-for-qmrestore.patch > @@ -0,0 +1,17 @@ > +Issue a bogus flush so that Ceph activates rbd cache, accelerating qmrestore > to RBD. > +--- > +Index: b/vma.c > +=================================================================== > +--- a/vma.c > ++++ b/vma.c > +@@ -335,6 +335,9 @@ static int extract_content(int argc, cha > + > + BlockDriverState *bs = blk_bs(blk); > + > ++ /* This is needed to activate rbd cache (writeback/coalesce) */ > ++ bdrv_flush(bs); > ++ > + if (vma_reader_register_bs(vmar, i, bs, write_zero, &errp) < 0) { > + g_error("%s", error_get_pretty(errp)); > + } > + > diff --git a/debian/patches/series b/debian/patches/series > index 3614309..c858a30 100644 > --- a/debian/patches/series > +++ b/debian/patches/series > @@ -51,6 +51,7 @@ pve/0050-fix-possible-unitialised-return-value.patch > pve/0051-net-NET_CLIENT_OPTIONS_KIND_MAX-changed.patch > pve/0052-vnc-refactor-to-QIOChannelSocket.patch > pve/0053-vma-use-BlockBackend-on-extract.patch > +pve/0054-vma-force-enable-rbd-cache-for-qmrestore.patch > #see https://bugs.launchpad.net/qemu/+bug/1488363?comments=all > extra/0001-Revert-target-i386-disable-LINT0-after-reset.patch > extra/0001-i386-kvmvapic-initialise-imm32-variable.patch -- Zuzendari Teknikoa / Director Técnico Binovo IT Human Project, S.L. Telf. 943493611 943324914 Astigarraga bidea 2, planta 6 dcha., ofi. 3-2; 20180 Oiartzun (Gipuzkoa) www.binovo.es _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel