qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] guest sync and bdrv_co_flush
@ 2014-11-07  8:39 lihuiba
  2014-11-10 12:06 ` Kevin Wolf
  0 siblings, 1 reply; 2+ messages in thread
From: lihuiba @ 2014-11-07  8:39 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 637 bytes --]

Hi, all


I'm a user of qemu/kvm, and I'm wondering some internals of qemu/kvm, so I'd better post it in 
this developer's mailing list.


To be specific, I'm wondering how data is flushed to disk. Intuitively, when the guest issues a 
SYNCHRONIZE CACHE command in the SCSI layer, qemu/kvm should call bdrv_co_flush(),
which will eventually call the block driver's bdrv_co_flush_to_os() and bdrv_co_flush_to_disk().


But from simple grep-ing, I didn't find any calling to bdrv_co_flush() is responsible for SYNCHRONIZE 
CACHE. So, can you tell me how qemu/kvm ensures guest data be written on persistent storage?


Thank you, very much!

[-- Attachment #2: Type: text/html, Size: 1474 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Qemu-devel] guest sync and bdrv_co_flush
  2014-11-07  8:39 [Qemu-devel] guest sync and bdrv_co_flush lihuiba
@ 2014-11-10 12:06 ` Kevin Wolf
  0 siblings, 0 replies; 2+ messages in thread
From: Kevin Wolf @ 2014-11-10 12:06 UTC (permalink / raw)
  To: lihuiba; +Cc: qemu-devel

Am 07.11.2014 um 09:39 hat lihuiba geschrieben:
> Hi, all
> 
> I'm a user of qemu/kvm, and I'm wondering some internals of qemu/kvm, so I'd
> better post it in 
> this developer's mailing list.
> 
> To be specific, I'm wondering how data is flushed to disk. Intuitively, when
> the guest issues a 
> SYNCHRONIZE CACHE command in the SCSI layer, qemu/kvm should call bdrv_co_flush
> (),
> which will eventually call the block driver's bdrv_co_flush_to_os()
> and bdrv_co_flush_to_disk().
> 
> But from simple grep-ing, I didn't find any calling to bdrv_co_flush() is
> responsible for SYNCHRONIZE 
> CACHE. So, can you tell me how qemu/kvm ensures guest data be written on
> persistent storage?

The relevant code is in hw/scsi/scsi-disk.c, in the function
scsi_disk_emulate_command(), for 'case SYNCHRONIZE_CACHE:'.

The call chain from there is blk_aio_flush() -> bdrv_aio_flush() ->
bdrv_aio_flush_co_entry() -> bdrv_co_flush()

Kevin

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-11-10 12:06 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-07  8:39 [Qemu-devel] guest sync and bdrv_co_flush lihuiba
2014-11-10 12:06 ` Kevin Wolf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).