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

Michal Privoznik mprivozn at redhat.com
Fri Aug 19 09:11:08 UTC 2011


On 19.08.2011 11:04, Daniel Veillard wrote:
> 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
> 
Thanks, applied.

Michal




More information about the libvir-list mailing list