On 30/07/2015 03:35, Fam Zheng wrote: > block.c bdrv_create > block/curl.c curl_init_state > block/io.c bdrv_drain > block/io.c bdrv_drain_all > block/io.c bdrv_prwv_co > block/io.c bdrv_get_block_status_above > block/io.c bdrv_aio_cancel > block/io.c bdrv_flush > block/io.c bdrv_discard > block/io.c bdrv_flush_io_queue > block/nfs.c nfs_get_allocated_file_size > block/qed-table.c qed_read_l1_table_sync > block/qed-table.c qed_write_l1_table_sync > block/qed-table.c qed_read_l2_table_sync > block/qed-table.c qed_write_l2_table_sync > blockjob.c block_job_finish_sync > include/block/block.h bdrv_get_stats > qemu-img.c run_block_job > qemu-io-cmds.c do_co_write_zeroes > qemu-io-cmds.c wait_break_f > > Most of them make some sense to me, but not many make a real difference. The > most important ones should be bdrv_drain* and bdrv_flush, and can be taken > care > of from caller side.
Even just bdrv_drain*. bdrv_flush is okay with incoming requests, it should be handled in the caller side. Paolo