[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