[libvirt] [PATCH] storage: Flush host cache after write

Daniel Veillard veillard at redhat.com
Fri Aug 19 09:04:22 UTC 2011


On Thu, Aug 18, 2011 at 04:25:55PM +0200, Michal Privoznik wrote:
> On 18.08.2011 15:55, Eric Blake wrote:
> > On 08/18/2011 07:44 AM, Michal Privoznik wrote:
> >> Although we are flushing cache after some critical writes (e.g.
> >> volume creation), after some others we do not (e.g. volume cloning).
> >> This patch fix this issue. That is for volume cloning, writing
> >> header of logical volume, and storage wipe.
> >> ---
> >>   src/storage/storage_backend.c         |    8 ++++++++
> >>   src/storage/storage_backend_logical.c |    7 +++++++
> >>   src/storage/storage_driver.c          |    8 ++++++++
> >>   3 files changed, 23 insertions(+), 0 deletions(-)
> >>
> >> diff --git a/src/storage/storage_backend.c
> >> b/src/storage/storage_backend.c
> >> index 6243d1e..889f530 100644
> >> --- a/src/storage/storage_backend.c
> >> +++ b/src/storage/storage_backend.c
> >> @@ -208,6 +208,14 @@ virStorageBackendCopyToFD(virStorageVolDefPtr vol,
> >>           } while ((amtleft -= interval)>  0);
> >>       }
> >>
> >> +    if (fdatasync(fd)<  0) {
> > 
> > Why fdatasync here,
> Here we need to flush data but not metadata.
> > 
> > 
> >> +++ b/src/storage/storage_backend_logical.c
> >> @@ -424,6 +424,13 @@ virStorageBackendLogicalBuildPool(virConnectPtr
> >> conn ATTRIBUTE_UNUSED,
> >>               VIR_FORCE_CLOSE(fd);
> >>               goto cleanup;
> >>           }
> >> +        if (fsync(fd)<  0) {
> > 
> > but only fsync here?
> >
> Here we are accessing logical volume where we want to make sure anybody
> (including LVM) will read data & metadata.

  thanks for the explanation, ACK then !

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list