From e5977a5e27819bf2e4bb76e3cb48afc41213b3c2 Mon Sep 17 00:00:00 2001 From: Manuel Bentele Date: Thu, 30 May 2019 15:32:51 +0200 Subject: Added call graph of QEMU's QCOW2 implementation --- .../call_graph_qemu_qcow2_implementation.pdf | Bin 0 -> 74836 bytes .../call_graph_qemu_qcow2_implementation.svg | 3319 ++++++++++++++++++++ 2 files changed, 3319 insertions(+) create mode 100644 analysis/qcow2-qemu/call_graph_qemu_qcow2_implementation.pdf create mode 100644 analysis/qcow2-qemu/call_graph_qemu_qcow2_implementation.svg diff --git a/analysis/qcow2-qemu/call_graph_qemu_qcow2_implementation.pdf b/analysis/qcow2-qemu/call_graph_qemu_qcow2_implementation.pdf new file mode 100644 index 0000000..5a082ae Binary files /dev/null and b/analysis/qcow2-qemu/call_graph_qemu_qcow2_implementation.pdf differ diff --git a/analysis/qcow2-qemu/call_graph_qemu_qcow2_implementation.svg b/analysis/qcow2-qemu/call_graph_qemu_qcow2_implementation.svg new file mode 100644 index 0000000..44e16e2 --- /dev/null +++ b/analysis/qcow2-qemu/call_graph_qemu_qcow2_implementation.svg @@ -0,0 +1,3319 @@ + + + + + + +callgraph + + + +qcow2_get_last_cluster + +qcow2_get_last_cluster + + + +qcow2_signal_corruption + +qcow2_signal_corruption + + + +qcow2_get_last_cluster->qcow2_signal_corruption + + + + + +qcow2_get_refcount + +qcow2_get_refcount + + + +qcow2_get_last_cluster->qcow2_get_refcount + + + + + +qcow2_update_header + +qcow2_update_header + + + +qcow2_signal_corruption->qcow2_update_header + + + + + +qcow2_get_refcount->qcow2_signal_corruption + + + + + +qcow2_cache_put + +qcow2_cache_put + + + +qcow2_get_refcount->qcow2_cache_put + + + + + +qcow2_cache_get + +qcow2_cache_get + + + +qcow2_get_refcount->qcow2_cache_get + + + + + +qcow2_measure + +qcow2_measure + + + +qcow2_refcount_metadata_size + +qcow2_refcount_metadata_size + + + +qcow2_measure->qcow2_refcount_metadata_size + + + + + +validate_cluster_size + +validate_cluster_size + + + +qcow2_measure->validate_cluster_size + + + + + +qobject_unref_impl.part.12 + +qobject_unref_impl.part.12 + + + +qcow2_measure->qobject_unref_impl.part.12 + + + + + +qcow2_co_block_status + +qcow2_co_block_status + + + +qcow2_get_cluster_offset + +qcow2_get_cluster_offset + + + +qcow2_co_block_status->qcow2_get_cluster_offset + + + + + +qcow2_get_cluster_offset->qcow2_signal_corruption + + + + + +qcow2_get_cluster_offset->qcow2_cache_put + + + + + +l2_load + +l2_load + + + +qcow2_get_cluster_offset->l2_load + + + + + +count_contiguous_clusters + +count_contiguous_clusters + + + +qcow2_get_cluster_offset->count_contiguous_clusters + + + + + +qcow2_reopen_bitmaps_rw_hint + +qcow2_reopen_bitmaps_rw_hint + + + +update_ext_header_and_dir_in_place + +update_ext_header_and_dir_in_place + + + +qcow2_reopen_bitmaps_rw_hint->update_ext_header_and_dir_in_place + + + + + +bitmap_list_free.part.3 + +bitmap_list_free.part.3 + + + +qcow2_reopen_bitmaps_rw_hint->bitmap_list_free.part.3 + + + + + +bitmap_list_load + +bitmap_list_load + + + +qcow2_reopen_bitmaps_rw_hint->bitmap_list_load + + + + + +bitmap_list_store + +bitmap_list_store + + + +update_ext_header_and_dir_in_place->bitmap_list_store + + + + + +update_header_sync + +update_header_sync + + + +update_ext_header_and_dir_in_place->update_header_sync + + + + + +bitmap_list_load->bitmap_list_free.part.3 + + + + + +check_dir_entry + +check_dir_entry + + + +bitmap_list_load->check_dir_entry + + + + + +qcow2_snapshot_create + +qcow2_snapshot_create + + + +qcow2_pre_write_overlap_check + +qcow2_pre_write_overlap_check + + + +qcow2_snapshot_create->qcow2_pre_write_overlap_check + + + + + +qcow2_update_snapshot_refcount + +qcow2_update_snapshot_refcount + + + +qcow2_snapshot_create->qcow2_update_snapshot_refcount + + + + + +qcow2_write_snapshots + +qcow2_write_snapshots + + + +qcow2_snapshot_create->qcow2_write_snapshots + + + + + +qcow2_alloc_clusters + +qcow2_alloc_clusters + + + +qcow2_snapshot_create->qcow2_alloc_clusters + + + + + +qcow2_cluster_discard + +qcow2_cluster_discard + + + +qcow2_snapshot_create->qcow2_cluster_discard + + + + + +qcow2_pre_write_overlap_check->qcow2_signal_corruption + + + + + +qcow2_check_metadata_overlap + +qcow2_check_metadata_overlap + + + +qcow2_pre_write_overlap_check->qcow2_check_metadata_overlap + + + + + +qcow2_update_snapshot_refcount->qcow2_signal_corruption + + + + + +qcow2_update_snapshot_refcount->qcow2_get_refcount + + + + + +qcow2_cache_entry_mark_dirty + +qcow2_cache_entry_mark_dirty + + + +qcow2_update_snapshot_refcount->qcow2_cache_entry_mark_dirty + + + + + +qcow2_update_snapshot_refcount->qcow2_cache_put + + + + + +qcow2_process_discards + +qcow2_process_discards + + + +qcow2_update_snapshot_refcount->qcow2_process_discards + + + + + +qcow2_update_snapshot_refcount->qcow2_cache_get + + + + + +update_refcount + +update_refcount + + + +qcow2_update_snapshot_refcount->update_refcount + + + + + +qcow2_cache_set_dependency + +qcow2_cache_set_dependency + + + +qcow2_update_snapshot_refcount->qcow2_cache_set_dependency + + + + + +qcow2_write_snapshots->qcow2_pre_write_overlap_check + + + + + +qcow2_write_snapshots->qcow2_alloc_clusters + + + + + +qcow2_free_clusters + +qcow2_free_clusters + + + +qcow2_write_snapshots->qcow2_free_clusters + + + + + +qcow2_alloc_clusters->update_refcount + + + + + +alloc_clusters_noref + +alloc_clusters_noref + + + +qcow2_alloc_clusters->alloc_clusters_noref + + + + + +qcow2_cluster_discard->qcow2_cache_entry_mark_dirty + + + + + +qcow2_cluster_discard->qcow2_cache_put + + + + + +qcow2_cluster_discard->qcow2_process_discards + + + + + +get_cluster_table + +get_cluster_table + + + +qcow2_cluster_discard->get_cluster_table + + + + + +qcow2_free_any_clusters + +qcow2_free_any_clusters + + + +qcow2_cluster_discard->qcow2_free_any_clusters + + + + + +qcow2_cache_discard + +qcow2_cache_discard + + + +qcow2_cache_table_release + +qcow2_cache_table_release + + + +qcow2_cache_discard->qcow2_cache_table_release + + + + + +qcow2_detach_aio_context + +qcow2_detach_aio_context + + + +cache_clean_timer_del.isra.8 + +cache_clean_timer_del.isra.8 + + + +qcow2_detach_aio_context->cache_clean_timer_del.isra.8 + + + + + +qcow2_cluster_zeroize + +qcow2_cluster_zeroize + + + +qcow2_cluster_zeroize->qcow2_cache_entry_mark_dirty + + + + + +qcow2_cluster_zeroize->qcow2_cache_put + + + + + +qcow2_cluster_zeroize->qcow2_process_discards + + + + + +qcow2_cluster_zeroize->get_cluster_table + + + + + +qcow2_cluster_zeroize->qcow2_free_any_clusters + + + + + +get_cluster_table->qcow2_signal_corruption + + + + + +get_cluster_table->qcow2_alloc_clusters + + + + + +get_cluster_table->qcow2_cache_entry_mark_dirty + + + + + +get_cluster_table->qcow2_cache_put + + + + + +get_cluster_table->qcow2_free_clusters + + + + + +get_cluster_table->l2_load + + + + + +get_cluster_table->qcow2_cache_get + + + + + +qcow2_cache_get_empty + +qcow2_cache_get_empty + + + +get_cluster_table->qcow2_cache_get_empty + + + + + +qcow2_cache_flush + +qcow2_cache_flush + + + +get_cluster_table->qcow2_cache_flush + + + + + +qcow2_grow_l1_table + +qcow2_grow_l1_table + + + +get_cluster_table->qcow2_grow_l1_table + + + + + +qcow2_write_l1_entry + +qcow2_write_l1_entry + + + +get_cluster_table->qcow2_write_l1_entry + + + + + +qcow2_free_any_clusters->qcow2_signal_corruption + + + + + +qcow2_free_any_clusters->qcow2_free_clusters + + + + + +clear_bitmap_table + +clear_bitmap_table + + + +clear_bitmap_table->qcow2_free_clusters + + + + + +qcow2_free_clusters->update_refcount + + + + + +qcow2_get_bitmap_info_list + +qcow2_get_bitmap_info_list + + + +qcow2_get_bitmap_info_list->bitmap_list_free.part.3 + + + + + +qcow2_get_bitmap_info_list->bitmap_list_load + + + + + +cache_clean_timer_cb + +cache_clean_timer_cb + + + +qcow2_cache_clean_unused + +qcow2_cache_clean_unused + + + +cache_clean_timer_cb->qcow2_cache_clean_unused + + + + + +qcow2_cache_clean_unused->qcow2_cache_table_release + + + + + +qcow2_handle_l2meta + +qcow2_handle_l2meta + + + +qcow2_alloc_cluster_link_l2 + +qcow2_alloc_cluster_link_l2 + + + +qcow2_handle_l2meta->qcow2_alloc_cluster_link_l2 + + + + + +qcow2_alloc_cluster_abort + +qcow2_alloc_cluster_abort + + + +qcow2_handle_l2meta->qcow2_alloc_cluster_abort + + + + + +qcow2_alloc_cluster_link_l2->qcow2_cache_entry_mark_dirty + + + + + +qcow2_alloc_cluster_link_l2->qcow2_cache_put + + + + + +qcow2_alloc_cluster_link_l2->get_cluster_table + + + + + +qcow2_alloc_cluster_link_l2->qcow2_free_any_clusters + + + + + +qcow2_alloc_cluster_link_l2->qcow2_cache_set_dependency + + + + + +do_perform_cow_write + +do_perform_cow_write + + + +qcow2_alloc_cluster_link_l2->do_perform_cow_write + + + + + +qcow2_cache_depends_on_flush + +qcow2_cache_depends_on_flush + + + +qcow2_alloc_cluster_link_l2->qcow2_cache_depends_on_flush + + + + + +qcow2_mark_dirty + +qcow2_mark_dirty + + + +qcow2_alloc_cluster_link_l2->qcow2_mark_dirty + + + + + +do_perform_cow_read.part.11 + +do_perform_cow_read.part.11 + + + +qcow2_alloc_cluster_link_l2->do_perform_cow_read.part.11 + + + + + +do_perform_cow_encrypt.isra.13.part.14 + +do_perform_cow_encrypt.isra.13.part.14 + + + +qcow2_alloc_cluster_link_l2->do_perform_cow_encrypt.isra.13.part.14 + + + + + +qcow2_alloc_cluster_abort->qcow2_free_clusters + + + + + +qcow2_expand_zero_clusters + +qcow2_expand_zero_clusters + + + +qcow2_cache_empty + +qcow2_cache_empty + + + +qcow2_expand_zero_clusters->qcow2_cache_empty + + + + + +expand_zero_clusters_in_l1 + +expand_zero_clusters_in_l1 + + + +qcow2_expand_zero_clusters->expand_zero_clusters_in_l1 + + + + + +qcow2_validate_table + +qcow2_validate_table + + + +qcow2_expand_zero_clusters->qcow2_validate_table + + + + + +qcow2_cache_empty->qcow2_cache_table_release + + + + + +qcow2_cache_empty->qcow2_cache_flush + + + + + +expand_zero_clusters_in_l1->qcow2_signal_corruption + + + + + +expand_zero_clusters_in_l1->qcow2_get_refcount + + + + + +expand_zero_clusters_in_l1->qcow2_pre_write_overlap_check + + + + + +expand_zero_clusters_in_l1->qcow2_alloc_clusters + + + + + +expand_zero_clusters_in_l1->qcow2_cache_entry_mark_dirty + + + + + +expand_zero_clusters_in_l1->qcow2_cache_put + + + + + +expand_zero_clusters_in_l1->qcow2_free_clusters + + + + + +expand_zero_clusters_in_l1->qcow2_cache_get + + + + + +expand_zero_clusters_in_l1->qcow2_cache_depends_on_flush + + + + + +qcow2_update_cluster_refcount + +qcow2_update_cluster_refcount + + + +expand_zero_clusters_in_l1->qcow2_update_cluster_refcount + + + + + +l2_load->qcow2_cache_get + + + + + +qcow2_cache_do_get + +qcow2_cache_do_get + + + +qcow2_cache_get->qcow2_cache_do_get + + + + + +qcow2_refcount_area + +qcow2_refcount_area + + + +qcow2_refcount_area->qcow2_refcount_metadata_size + + + + + +qcow2_refcount_area->qcow2_cache_entry_mark_dirty + + + + + +qcow2_refcount_area->qcow2_cache_put + + + + + +qcow2_refcount_area->qcow2_free_clusters + + + + + +qcow2_refcount_area->qcow2_cache_get + + + + + +qcow2_refcount_area->qcow2_cache_get_empty + + + + + +qcow2_refcount_area->qcow2_cache_flush + + + + + +qcow2_cache_get_empty->qcow2_cache_do_get + + + + + +qcow2_cache_write + +qcow2_cache_write + + + +qcow2_cache_flush->qcow2_cache_write + + + + + +qcow2_attach_aio_context + +qcow2_attach_aio_context + + + +cache_clean_timer_init + +cache_clean_timer_init + + + +qcow2_attach_aio_context->cache_clean_timer_init + + + + + +qcow2_co_check + +qcow2_co_check + + + +qcow2_co_check_locked + +qcow2_co_check_locked + + + +qcow2_co_check->qcow2_co_check_locked + + + + + +qcow2_check_refcounts + +qcow2_check_refcounts + + + +qcow2_co_check_locked->qcow2_check_refcounts + + + + + +qcow2_mark_consistent + +qcow2_mark_consistent + + + +qcow2_co_check_locked->qcow2_mark_consistent + + + + + +qcow2_mark_clean + +qcow2_mark_clean + + + +qcow2_co_check_locked->qcow2_mark_clean + + + + + +qcow2_inc_refcounts_imrt + +qcow2_inc_refcounts_imrt + + + +realloc_refcount_array + +realloc_refcount_array + + + +qcow2_inc_refcounts_imrt->realloc_refcount_array + + + + + +refcount_array_byte_size.isra.12.part.13 + +refcount_array_byte_size.isra.12.part.13 + + + +realloc_refcount_array->refcount_array_byte_size.isra.12.part.13 + + + + + +qcow2_co_pwritev_compressed + +qcow2_co_pwritev_compressed + + + +qcow2_co_pwritev_compressed->qcow2_pre_write_overlap_check + + + + + +qcow2_alloc_compressed_cluster_offset + +qcow2_alloc_compressed_cluster_offset + + + +qcow2_co_pwritev_compressed->qcow2_alloc_compressed_cluster_offset + + + + + +qcow2_co_do_compress + +qcow2_co_do_compress + + + +qcow2_co_pwritev_compressed->qcow2_co_do_compress + + + + + +qcow2_co_pwritev + +qcow2_co_pwritev + + + +qcow2_co_pwritev_compressed->qcow2_co_pwritev + + + + + +qcow2_alloc_compressed_cluster_offset->qcow2_cache_entry_mark_dirty + + + + + +qcow2_alloc_compressed_cluster_offset->qcow2_cache_put + + + + + +qcow2_alloc_compressed_cluster_offset->get_cluster_table + + + + + +qcow2_alloc_bytes + +qcow2_alloc_bytes + + + +qcow2_alloc_compressed_cluster_offset->qcow2_alloc_bytes + + + + + +qcow2_co_pwritev->qcow2_pre_write_overlap_check + + + + + +qcow2_co_pwritev->qcow2_handle_l2meta + + + + + +qcow2_alloc_cluster_offset + +qcow2_alloc_cluster_offset + + + +qcow2_co_pwritev->qcow2_alloc_cluster_offset + + + + + +qcow2_can_store_new_dirty_bitmap + +qcow2_can_store_new_dirty_bitmap + + + +qcow2_can_store_new_dirty_bitmap->bitmap_list_free.part.3 + + + + + +qcow2_can_store_new_dirty_bitmap->bitmap_list_load + + + + + +check_constraints_on_bitmap + +check_constraints_on_bitmap + + + +qcow2_can_store_new_dirty_bitmap->check_constraints_on_bitmap + + + + + +qcow2_cache_entry_flush + +qcow2_cache_entry_flush + + + +qcow2_cache_write->qcow2_cache_entry_flush + + + + + +free_bitmap_clusters + +free_bitmap_clusters + + + +free_bitmap_clusters->clear_bitmap_table + + + + + +free_bitmap_clusters->qcow2_free_clusters + + + + + +bitmap_table_load.isra.4 + +bitmap_table_load.isra.4 + + + +free_bitmap_clusters->bitmap_table_load.isra.4 + + + + + +qcow2_alloc_clusters_at + +qcow2_alloc_clusters_at + + + +qcow2_alloc_clusters_at->qcow2_get_refcount + + + + + +qcow2_alloc_clusters_at->update_refcount + + + + + +update_refcount->qcow2_signal_corruption + + + + + +update_refcount->qcow2_cache_discard + + + + + +update_refcount->qcow2_cache_entry_mark_dirty + + + + + +update_refcount->qcow2_cache_put + + + + + +update_refcount->qcow2_process_discards + + + + + +update_refcount->qcow2_cache_get + + + + + +update_refcount->qcow2_refcount_area + + + + + +update_refcount->qcow2_cache_get_empty + + + + + +update_refcount->qcow2_cache_flush + + + + + +update_refcount->update_refcount + + + + + +update_refcount_discard + +update_refcount_discard + + + +update_refcount->update_refcount_discard + + + + + +qcow2_cache_is_table_offset + +qcow2_cache_is_table_offset + + + +update_refcount->qcow2_cache_is_table_offset + + + + + +update_refcount->alloc_clusters_noref + + + + + +update_refcount->qcow2_cache_set_dependency + + + + + +header_ext_add + +header_ext_add + + + +qcow2_update_header->header_ext_add + + + + + +qcow2_change_backing_file + +qcow2_change_backing_file + + + +qcow2_change_backing_file->qcow2_update_header + + + + + +qcow2_get_specific_info + +qcow2_get_specific_info + + + +qcow2_get_specific_info->qcow2_get_bitmap_info_list + + + + + +qcow2_reopen_bitmaps_rw + +qcow2_reopen_bitmaps_rw + + + +qcow2_reopen_bitmaps_rw->qcow2_reopen_bitmaps_rw_hint + + + + + +qcow2_cache_entry_flush->qcow2_pre_write_overlap_check + + + + + +qcow2_cache_entry_flush->qcow2_cache_flush + + + + + +qcow2_co_invalidate_cache + +qcow2_co_invalidate_cache + + + +qcow2_co_invalidate_cache->qobject_unref_impl.part.12 + + + + + +qcow2_close + +qcow2_close + + + +qcow2_co_invalidate_cache->qcow2_close + + + + + +qcow2_do_open + +qcow2_do_open + + + +qcow2_co_invalidate_cache->qcow2_do_open + + + + + +qcow2_close->cache_clean_timer_del.isra.8 + + + + + +qcow2_free_snapshots + +qcow2_free_snapshots + + + +qcow2_close->qcow2_free_snapshots + + + + + +qcow2_cache_destroy + +qcow2_cache_destroy + + + +qcow2_close->qcow2_cache_destroy + + + + + +qcow2_inactivate + +qcow2_inactivate + + + +qcow2_close->qcow2_inactivate + + + + + +qcow2_refcount_close + +qcow2_refcount_close + + + +qcow2_close->qcow2_refcount_close + + + + + +cleanup_unknown_header_ext.isra.7 + +cleanup_unknown_header_ext.isra.7 + + + +qcow2_close->cleanup_unknown_header_ext.isra.7 + + + + + +qcow2_do_open->cache_clean_timer_del.isra.8 + + + + + +qcow2_do_open->qcow2_validate_table + + + + + +qcow2_do_open->qcow2_co_check_locked + + + + + +qcow2_do_open->qcow2_update_header + + + + + +qcow2_read_snapshots + +qcow2_read_snapshots + + + +qcow2_do_open->qcow2_read_snapshots + + + + + +qcow2_do_open->qcow2_free_snapshots + + + + + +qcow2_do_open->qcow2_cache_destroy + + + + + +qcow2_update_options + +qcow2_update_options + + + +qcow2_do_open->qcow2_update_options + + + + + +qcow2_do_open->qcow2_refcount_close + + + + + +qcow2_do_open->cleanup_unknown_header_ext.isra.7 + + + + + +qcow2_load_dirty_bitmaps + +qcow2_load_dirty_bitmaps + + + +qcow2_do_open->qcow2_load_dirty_bitmaps + + + + + +qcow2_refcount_init + +qcow2_refcount_init + + + +qcow2_do_open->qcow2_refcount_init + + + + + +qcow2_read_extensions + +qcow2_read_extensions + + + +qcow2_do_open->qcow2_read_extensions + + + + + +qcow2_grow_l1_table->qcow2_pre_write_overlap_check + + + + + +qcow2_grow_l1_table->qcow2_alloc_clusters + + + + + +qcow2_grow_l1_table->qcow2_free_clusters + + + + + +qcow2_grow_l1_table->qcow2_cache_flush + + + + + +qcow2_cache_do_get->qcow2_signal_corruption + + + + + +qcow2_cache_do_get->qcow2_cache_entry_flush + + + + + +qcow2_mark_corrupt + +qcow2_mark_corrupt + + + +qcow2_mark_corrupt->qcow2_update_header + + + + + +qcow2_read_snapshots->qcow2_free_snapshots + + + + + +qcow2_snapshot_load_tmp + +qcow2_snapshot_load_tmp + + + +qcow2_snapshot_load_tmp->qcow2_validate_table + + + + + +find_snapshot_by_id_and_name.isra.2 + +find_snapshot_by_id_and_name.isra.2 + + + +qcow2_snapshot_load_tmp->find_snapshot_by_id_and_name.isra.2 + + + + + +qcow2_check_refcounts->qcow2_get_refcount + + + + + +qcow2_check_refcounts->qcow2_pre_write_overlap_check + + + + + +qcow2_check_refcounts->qcow2_cache_empty + + + + + +compare_refcounts + +compare_refcounts + + + +qcow2_check_refcounts->compare_refcounts + + + + + +qcow2_check_refcounts->qcow2_write_l1_entry + + + + + +calculate_refcounts + +calculate_refcounts + + + +qcow2_check_refcounts->calculate_refcounts + + + + + +qcow2_check_refcounts->refcount_array_byte_size.isra.12.part.13 + + + + + +alloc_clusters_imrt.isra.16 + +alloc_clusters_imrt.isra.16 + + + +qcow2_check_refcounts->alloc_clusters_imrt.isra.16 + + + + + +compare_refcounts->qcow2_get_refcount + + + + + +compare_refcounts->update_refcount + + + + + +qcow2_write_l1_entry->qcow2_pre_write_overlap_check + + + + + +calculate_refcounts->qcow2_inc_refcounts_imrt + + + + + +calculate_refcounts->realloc_refcount_array + + + + + +qcow2_check_bitmaps_refcounts + +qcow2_check_bitmaps_refcounts + + + +calculate_refcounts->qcow2_check_bitmaps_refcounts + + + + + +check_refcounts_l1 + +check_refcounts_l1 + + + +calculate_refcounts->check_refcounts_l1 + + + + + +alloc_clusters_imrt.isra.16->realloc_refcount_array + + + + + +qcow2_update_options_abort.isra.14 + +qcow2_update_options_abort.isra.14 + + + +qcow2_update_options_abort.isra.14->qcow2_cache_destroy + + + + + +qcow2_reopen_bitmaps_ro + +qcow2_reopen_bitmaps_ro + + + +qcow2_store_persistent_dirty_bitmaps + +qcow2_store_persistent_dirty_bitmaps + + + +qcow2_reopen_bitmaps_ro->qcow2_store_persistent_dirty_bitmaps + + + + + +qcow2_store_persistent_dirty_bitmaps->bitmap_list_free.part.3 + + + + + +qcow2_store_persistent_dirty_bitmaps->bitmap_list_load + + + + + +qcow2_store_persistent_dirty_bitmaps->qcow2_pre_write_overlap_check + + + + + +qcow2_store_persistent_dirty_bitmaps->qcow2_alloc_clusters + + + + + +qcow2_store_persistent_dirty_bitmaps->clear_bitmap_table + + + + + +qcow2_store_persistent_dirty_bitmaps->qcow2_free_clusters + + + + + +qcow2_store_persistent_dirty_bitmaps->check_constraints_on_bitmap + + + + + +qcow2_store_persistent_dirty_bitmaps->free_bitmap_clusters + + + + + +update_ext_header_and_dir + +update_ext_header_and_dir + + + +qcow2_store_persistent_dirty_bitmaps->update_ext_header_and_dir + + + + + +bytes_covered_by_bitmap_cluster.isra.5 + +bytes_covered_by_bitmap_cluster.isra.5 + + + +qcow2_store_persistent_dirty_bitmaps->bytes_covered_by_bitmap_cluster.isra.5 + + + + + +qcow2_co_truncate + +qcow2_co_truncate + + + +qcow2_co_truncate->qcow2_get_last_cluster + + + + + +qcow2_co_truncate->qobject_unref_impl.part.12 + + + + + +qcow2_co_truncate->qcow2_cluster_discard + + + + + +qcow2_co_truncate->qcow2_free_clusters + + + + + +qcow2_co_truncate->qcow2_alloc_cluster_link_l2 + + + + + +qcow2_co_truncate->qcow2_refcount_area + + + + + +qcow2_co_truncate->qcow2_alloc_clusters_at + + + + + +qcow2_co_truncate->qcow2_grow_l1_table + + + + + +preallocate_co + +preallocate_co + + + +qcow2_co_truncate->preallocate_co + + + + + +qcow2_write_caches + +qcow2_write_caches + + + +qcow2_co_truncate->qcow2_write_caches + + + + + +qcow2_shrink_reftable + +qcow2_shrink_reftable + + + +qcow2_co_truncate->qcow2_shrink_reftable + + + + + +qcow2_co_truncate->qcow2_update_options + + + + + +qcow2_shrink_l1_table + +qcow2_shrink_l1_table + + + +qcow2_co_truncate->qcow2_shrink_l1_table + + + + + +qcow2_truncate_bitmaps_check + +qcow2_truncate_bitmaps_check + + + +qcow2_co_truncate->qcow2_truncate_bitmaps_check + + + + + +preallocate_co->qcow2_free_any_clusters + + + + + +preallocate_co->qcow2_alloc_cluster_link_l2 + + + + + +preallocate_co->qcow2_alloc_cluster_offset + + + + + +qcow2_write_caches->qcow2_cache_write + + + + + +qcow2_shrink_reftable->qcow2_signal_corruption + + + + + +qcow2_shrink_reftable->qcow2_cache_discard + + + + + +qcow2_shrink_reftable->qcow2_cache_entry_mark_dirty + + + + + +qcow2_shrink_reftable->qcow2_cache_put + + + + + +qcow2_shrink_reftable->qcow2_process_discards + + + + + +qcow2_shrink_reftable->qcow2_cache_get + + + + + +qcow2_shrink_reftable->update_refcount_discard + + + + + +qcow2_shrink_reftable->qcow2_cache_is_table_offset + + + + + +qcow2_update_options->qcow2_update_options_abort.isra.14 + + + + + +qcow2_update_options_commit + +qcow2_update_options_commit + + + +qcow2_update_options->qcow2_update_options_commit + + + + + +qcow2_update_options_prepare + +qcow2_update_options_prepare + + + +qcow2_update_options->qcow2_update_options_prepare + + + + + +qcow2_shrink_l1_table->qcow2_free_clusters + + + + + +qcow2_truncate_bitmaps_check->bitmap_list_free.part.3 + + + + + +qcow2_truncate_bitmaps_check->bitmap_list_load + + + + + +alloc_clusters_noref->qcow2_get_refcount + + + + + +alloc_clusters_noref->qcow2_process_discards + + + + + +qcow2_cache_set_dependency->qcow2_cache_flush + + + + + +qcow2_open_entry + +qcow2_open_entry + + + +qcow2_open_entry->qcow2_do_open + + + + + +qcow2_remove_persistent_dirty_bitmap + +qcow2_remove_persistent_dirty_bitmap + + + +qcow2_remove_persistent_dirty_bitmap->bitmap_list_free.part.3 + + + + + +qcow2_remove_persistent_dirty_bitmap->bitmap_list_load + + + + + +qcow2_remove_persistent_dirty_bitmap->free_bitmap_clusters + + + + + +qcow2_remove_persistent_dirty_bitmap->update_ext_header_and_dir + + + + + +update_ext_header_and_dir->qcow2_free_clusters + + + + + +qcow2_flush_caches + +qcow2_flush_caches + + + +update_ext_header_and_dir->qcow2_flush_caches + + + + + +update_ext_header_and_dir->bitmap_list_store + + + + + +update_ext_header_and_dir->update_header_sync + + + + + +qcow2_co_pwrite_zeroes + +qcow2_co_pwrite_zeroes + + + +qcow2_co_pwrite_zeroes->qcow2_get_cluster_offset + + + + + +qcow2_co_pwrite_zeroes->qcow2_cluster_zeroize + + + + + +is_zero + +is_zero + + + +qcow2_co_pwrite_zeroes->is_zero + + + + + +qcow2_flush_caches->qcow2_write_caches + + + + + +do_perform_cow_write->qcow2_pre_write_overlap_check + + + + + +bitmap_list_store->qcow2_pre_write_overlap_check + + + + + +bitmap_list_store->qcow2_alloc_clusters + + + + + +bitmap_list_store->qcow2_free_clusters + + + + + +bitmap_list_store->check_dir_entry + + + + + +update_header_sync->qcow2_update_header + + + + + +qcow2_mark_consistent->qcow2_update_header + + + + + +qcow2_mark_consistent->qcow2_flush_caches + + + + + +qcow2_update_options_commit->cache_clean_timer_del.isra.8 + + + + + +qcow2_update_options_commit->cache_clean_timer_init + + + + + +qcow2_update_options_commit->qcow2_cache_destroy + + + + + +qcow2_alloc_cluster_offset->qcow2_signal_corruption + + + + + +qcow2_alloc_cluster_offset->qcow2_alloc_clusters + + + + + +qcow2_alloc_cluster_offset->qcow2_cache_put + + + + + +qcow2_alloc_cluster_offset->get_cluster_table + + + + + +qcow2_alloc_cluster_offset->count_contiguous_clusters + + + + + +qcow2_alloc_cluster_offset->qcow2_alloc_clusters_at + + + + + +qcow2_inactivate->qcow2_cache_flush + + + + + +qcow2_inactivate->qcow2_store_persistent_dirty_bitmaps + + + + + +qcow2_inactivate->qcow2_mark_clean + + + + + +qcow2_update_cluster_refcount->update_refcount + + + + + +qcow2_load_dirty_bitmaps->update_ext_header_and_dir_in_place + + + + + +qcow2_load_dirty_bitmaps->bitmap_list_free.part.3 + + + + + +qcow2_load_dirty_bitmaps->bitmap_list_load + + + + + +qcow2_load_dirty_bitmaps->bitmap_table_load.isra.4 + + + + + +qcow2_load_dirty_bitmaps->bytes_covered_by_bitmap_cluster.isra.5 + + + + + +walk_over_reftable + +walk_over_reftable + + + +walk_over_reftable->qcow2_signal_corruption + + + + + +walk_over_reftable->qcow2_cache_put + + + + + +walk_over_reftable->qcow2_cache_get + + + + + +qcow2_change_refcount_order + +qcow2_change_refcount_order + + + +qcow2_change_refcount_order->qcow2_pre_write_overlap_check + + + + + +qcow2_change_refcount_order->qcow2_alloc_clusters + + + + + +qcow2_change_refcount_order->qcow2_free_clusters + + + + + +qcow2_change_refcount_order->qcow2_cache_flush + + + + + +qcow2_change_refcount_order->qcow2_update_header + + + + + +qcow2_change_refcount_order->walk_over_reftable + + + + + +qcow2_check_metadata_overlap->qcow2_validate_table + + + + + +qcow2_check_bitmaps_refcounts->bitmap_list_free.part.3 + + + + + +qcow2_check_bitmaps_refcounts->bitmap_list_load + + + + + +qcow2_check_bitmaps_refcounts->qcow2_inc_refcounts_imrt + + + + + +qcow2_check_bitmaps_refcounts->bitmap_table_load.isra.4 + + + + + +check_refcounts_l1->qcow2_pre_write_overlap_check + + + + + +check_refcounts_l1->qcow2_inc_refcounts_imrt + + + + + +qcow2_update_options_prepare->qobject_unref_impl.part.12 + + + + + +qcow2_update_options_prepare->qcow2_cache_flush + + + + + +qcow2_update_options_prepare->qcow2_mark_clean + + + + + +qcow2_cache_create + +qcow2_cache_create + + + +qcow2_update_options_prepare->qcow2_cache_create + + + + + +qcow2_mark_clean->qcow2_update_header + + + + + +qcow2_mark_clean->qcow2_flush_caches + + + + + +qcow2_alloc_bytes->qcow2_signal_corruption + + + + + +qcow2_alloc_bytes->qcow2_get_refcount + + + + + +qcow2_alloc_bytes->update_refcount + + + + + +qcow2_alloc_bytes->alloc_clusters_noref + + + + + +qcow2_alloc_bytes->qcow2_cache_set_dependency + + + + + +qcow2_amend_options + +qcow2_amend_options + + + +qcow2_amend_options->qcow2_expand_zero_clusters + + + + + +qcow2_amend_options->qcow2_update_header + + + + + +qcow2_amend_options->qcow2_change_backing_file + + + + + +qcow2_amend_options->qcow2_change_refcount_order + + + + + +qcow2_amend_options->qcow2_mark_clean + + + + + +qcow2_amend_helper_cb + +qcow2_amend_helper_cb + + + +qcow2_amend_options->qcow2_amend_helper_cb + + + + + +qcow2_co_pdiscard + +qcow2_co_pdiscard + + + +qcow2_co_pdiscard->qcow2_cluster_discard + + + + + +qcow2_snapshot_goto + +qcow2_snapshot_goto + + + +qcow2_snapshot_goto->qcow2_pre_write_overlap_check + + + + + +qcow2_snapshot_goto->qcow2_update_snapshot_refcount + + + + + +qcow2_snapshot_goto->qcow2_validate_table + + + + + +qcow2_snapshot_goto->qcow2_grow_l1_table + + + + + +qcow2_snapshot_goto->find_snapshot_by_id_and_name.isra.2 + + + + + +qcow2_reopen_prepare + +qcow2_reopen_prepare + + + +qcow2_reopen_prepare->qcow2_update_options_abort.isra.14 + + + + + +qcow2_reopen_prepare->qcow2_reopen_bitmaps_ro + + + + + +qcow2_reopen_prepare->qcow2_update_options_prepare + + + + + +qcow2_reopen_prepare->qcow2_mark_clean + + + + + +qcow2_co_flush_to_os + +qcow2_co_flush_to_os + + + +qcow2_co_flush_to_os->qcow2_write_caches + + + + + +qcow2_co_preadv + +qcow2_co_preadv + + + +qcow2_co_preadv->qcow2_get_cluster_offset + + + + + +qcow2_co_preadv->qcow2_co_do_compress + + + + + +alloc_refblock + +alloc_refblock + + + +alloc_refblock->qcow2_alloc_clusters + + + + + +flush_refblock + +flush_refblock + + + +flush_refblock->qcow2_pre_write_overlap_check + + + + + +qcow2_make_empty + +qcow2_make_empty + + + +qcow2_make_empty->qcow2_alloc_clusters + + + + + +qcow2_make_empty->qcow2_cluster_discard + + + + + +qcow2_make_empty->qcow2_cache_empty + + + + + +qcow2_make_empty->qcow2_mark_clean + + + + + +qcow2_make_empty->qcow2_mark_dirty + + + + + +qcow2_snapshot_delete + +qcow2_snapshot_delete + + + +qcow2_snapshot_delete->qcow2_update_snapshot_refcount + + + + + +qcow2_snapshot_delete->qcow2_write_snapshots + + + + + +qcow2_snapshot_delete->qcow2_free_clusters + + + + + +qcow2_snapshot_delete->qcow2_validate_table + + + + + +qcow2_snapshot_delete->find_snapshot_by_id_and_name.isra.2 + + + + + +qcow2_open + +qcow2_open + + + +qcow2_open->qcow2_open_entry + + + + + +qcow2_crypto_hdr_init_func + +qcow2_crypto_hdr_init_func + + + +qcow2_crypto_hdr_init_func->qcow2_pre_write_overlap_check + + + + + +qcow2_crypto_hdr_init_func->qcow2_alloc_clusters + + + + + +qcow2_co_copy_range_to + +qcow2_co_copy_range_to + + + +qcow2_co_copy_range_to->qcow2_pre_write_overlap_check + + + + + +qcow2_co_copy_range_to->qcow2_handle_l2meta + + + + + +qcow2_co_copy_range_to->qcow2_alloc_cluster_offset + + + + + +qcow2_co_copy_range_from + +qcow2_co_copy_range_from + + + +qcow2_co_copy_range_from->qcow2_get_cluster_offset + + + + + +qcow2_reopen_commit + +qcow2_reopen_commit + + + +qcow2_reopen_commit->qcow2_update_options_commit + + + + + +qcow2_co_create_opts + +qcow2_co_create_opts + + + +qcow2_co_create_opts->qobject_unref_impl.part.12 + + + + + +qcow2_co_create + +qcow2_co_create + + + +qcow2_co_create_opts->qcow2_co_create + + + + + +qcow2_co_create->validate_cluster_size + + + + + +qcow2_co_create->qcow2_alloc_clusters + + + + + +qcow2_co_create->qcow2_update_header + + + + + +qcow2_reopen_abort + +qcow2_reopen_abort + + + +qcow2_reopen_abort->qcow2_update_options_abort.isra.14 + + + + + +qcow2_decompress + +qcow2_decompress + + + +qcow2_crypto_hdr_write_func + +qcow2_crypto_hdr_write_func + + + +qcow2_get_info + +qcow2_get_info + + + +qcow2_join_options + +qcow2_join_options + + + +qcow2_compress_pool_func + +qcow2_compress_pool_func + + + +qcow2_compress + +qcow2_compress + + + +get_refcount_ro3 + +get_refcount_ro3 + + + +qcow2_measure_crypto_hdr_write_func + +qcow2_measure_crypto_hdr_write_func + + + +set_refcount_ro0 + +set_refcount_ro0 + + + +qcow2_measure_crypto_hdr_init_func + +qcow2_measure_crypto_hdr_init_func + + + +set_refcount_ro3 + +set_refcount_ro3 + + + +get_refcount_ro0 + +get_refcount_ro0 + + + +get_refcount_ro5 + +get_refcount_ro5 + + + +release_dirty_bitmap_helper + +release_dirty_bitmap_helper + + + +set_refcount_ro5 + +set_refcount_ro5 + + + +get_refcount_ro2 + +get_refcount_ro2 + + + +do_qemu_init_bdrv_qcow2_init + +do_qemu_init_bdrv_qcow2_init + + + +set_refcount_ro2 + +set_refcount_ro2 + + + +set_refcount_ro1 + +set_refcount_ro1 + + + +qcow2_snapshot_list + +qcow2_snapshot_list + + + +get_refcount_ro1 + +get_refcount_ro1 + + + +set_refcount_ro6 + +set_refcount_ro6 + + + +get_refcount_ro6 + +get_refcount_ro6 + + + +qcow2_load_vmstate + +qcow2_load_vmstate + + + +set_readonly_helper + +set_readonly_helper + + + +qcow2_probe + +qcow2_probe + + + +qcow2_save_vmstate + +qcow2_save_vmstate + + + +qcow2_compress_complete + +qcow2_compress_complete + + + +set_refcount_ro4 + +set_refcount_ro4 + + + +qcow2_refresh_limits + +qcow2_refresh_limits + + + +get_refcount_ro4 + +get_refcount_ro4 + + + +bdrv_qcow2_init + +bdrv_qcow2_init + + + +qcow2_crypto_hdr_read_func + +qcow2_crypto_hdr_read_func + + + -- cgit v1.2.3-55-g7522