Am 21.06.2016 um 09:32 hat Paolo Bonzini geschrieben:
On 20/06/2016 17:19, Denis V. Lunev wrote:
+ /* Check if storage is actually dirty before flushing to disk */
+ if (!bs->dirty) {
+ goto flush_parent;
+ }
+ bs->dirty = false;
+
This should be cleared after the flush is complete. If you have
write begin
write end
flush #1 begin
flush #2 begin
Then the second flush must only return after the first has finished.
I think clearing bs->dirty after the flush completion wouldn't
necessarily be right either if there are concurrent writes in flight, as
only completed writes are guaranteed to be flushed by it.
Kevin