OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

virtio message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [virtio] Re: [virtio-dev] Re: [virtio-comment] Problems with VIRTIO-4 and writeback only disks


Paolo Bonzini <pbonzini@redhat.com> writes:
> Il 03/10/2013 07:05, Rusty Russell ha scritto:
>> Paolo Bonzini <pbonzini@redhat.com> writes:
>>> Il 02/10/2013 02:50, Rusty Russell ha scritto:
>>>>>> I would make this even stronger, like "It is undefined whether a disk
>>>>>> operates in writeback or writethrough mode after a guest announces lack
>>>>>> of support for VIRTIO_BLK_F_FLUSH".
>>>> At this point it's documenting historical behavior, rather than
>>>> proscribing it.  How about we simply note:
>>>>
>>>> Some older legacy devices did not operate in writethrough mode even
>>>> after a guest announced lack of support for VIRTIO_BLK_F_FLUSH.
>>>
>>> That's fine.
>>>
>>> Paolo
>> 
>> Here's the final patch then:
>> 
>> commit ff7486a8699c06743473c0078e9b511275d65306
>> Author: Rusty Russell <rusty@au1.ibm.com>
>> Date:   Tue Oct 1 14:53:17 2013 +0930
>> 
>>     virtio_blk: deprecate flush.
>>     
>>     This is partially a port of Paolo Bonzini <pbonzini@redhat.com>'s
>>     WCE spec changes, but puts them in the legacy section.  It reserves
>>     the writeback field for compatibility.
>>     
>>     Flush is now required.
>>     
>>     See: https://lists.oasis-open.org/archives/virtio-comment/201308/msg00078.html
>>     
>>     Signed-off-by: Rusty Russell <rusty@au1.ibm.com>
>> 
>> diff --git a/virtio-v1.0-wd01-part1-specification.txt b/virtio-v1.0-wd01-part1-specification.txt
>> index 5efeba7..a9c0cce 100644
>> --- a/virtio-v1.0-wd01-part1-specification.txt
>> +++ b/virtio-v1.0-wd01-part1-specification.txt
>> @@ -1817,8 +1817,6 @@ device except where noted.
>>  
>>    VIRTIO_BLK_F_BLK_SIZE (6) Block size of disk is in “blk_size”.
>>  
>> -  VIRTIO_BLK_F_FLUSH (9) Cache flush command support.
>> -
>>    VIRTIO_BLK_F_TOPOLOGY (10) Device exports information on optimal I/O
>>      alignment.
>>  
>> @@ -1843,6 +1841,7 @@ device except where noted.
>>  			u16 min_io_size;
>>  			u32 opt_io_size;
>>  		} topology;
>> +		u8 reserved;
>>  	};
>>  
>>  2.4.2.3.1 Legacy Interface: Feature bits
>> @@ -1851,6 +1850,15 @@ device except where noted.
>>  
>>    VIRTIO_BLK_F_SCSI (7) Device supports scsi packet commands.
>>  
>> +  VIRTIO_BLK_F_FLUSH (9) Cache flush command support.
>> +
>> +  VIRTIO_BLK_F_CONFIG_WCE (11) Device can toggle its cache between writeback
>> +    and writethrough modes.
>> +
>> +VIRTIO_BLK_F_FLUSH was also called VIRTIO_BLK_F_WCE: Legacy drivers
>> +should only negotiate this feature if they are capable of sending
>> +VIRTIO_BLK_T_FLUSH commands.
>> +
>>  2.4.2.4. Device Initialization
>>  -----------------------------
>>  
>> @@ -1872,6 +1880,21 @@ device except where noted.
>>    I/O lengths for the driver to use. This also does not affect the units
>>    in the protocol, only performance.
>>  
>> +2.4.2.4.1. Legacy Interface: Device Initialization
>> +-----------------------------
>> +
>> +The reserved field used to be called writeback.  If the
>> +VIRTIO_BLK_F_CONFIG_FLUSH feature is offered, the cache mode should be
>
> CONFIG_WCE?

Oops, oversed.  Thanks.

>> +read from the writeback field of the configuration if available; the
>> +driver can also write to the field in order to toggle the cache
>> +between writethrough (0) and writeback (1) mode.  If the feature is
>> +not available, the driver can instead look at the result of
>> +negotiating VIRTIO_BLK_F_FLUSH: the cache will be in writeback mode
>> +after reset if and only if VIRTIO_BLK_F_FLUSH is negotiated.
>> +
>> +Some older legacy devices did not operate in writethrough mode even
>> +after a guest announced lack of support for VIRTIO_BLK_F_FLUSH.
>> +
>>  2.4.2.5. Device Operation
>>  ------------------------
>>  
>> @@ -1907,6 +1930,9 @@ error or VIRTIO_BLK_S_UNSUPP for a request unsupported by host:
>>  	#define VIRTIO_BLK_S_IOERR     1
>>  	#define VIRTIO_BLK_S_UNSUPP    2
>>  
>> +Any writes completed before the submission of the flush command should
>> +be committed to permanent storage by the device.
>
> s/permanent/non-volatile/
>
> Putting them in a non-volatile cache is fine.

Thanks, fixed.

Cheers,
Rusty.



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]