* [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).