Overall, this series adds more uses for BlockBackends and makes the code follow the "reference theory" more closely, in that any BlockBackend created (through -drive or blockdev-add) has a reference count of 1, and that reference should be held by the monitor. This is reflected here by introducing an explicit list of monitor-owned BlockBackends, which in turn allows us to remove bdrv_states, and, perhaps most importantly, blk_hide_on_behalf_of_do_drive_del().
This series depends on v3 (or any later version) of my series "block: Rework bdrv_close_all()" (or any later version). Differences between the patches here and the ones included in v2 of "block: Rework bdrv_close_all()": - Patch 4: bdrv_close_all() looks different now - Patch 5: - Fixed several bugs relating to blockdev_auto_del() (monitor_remove_blk() is now idempotent, so it is just called everywhere where we want the BB to disappear) - monitor_blk_unref() does no longer exist git-backport-diff against v2 of "block: Rework bdrv_close_all()": Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream patch [down] : patch is downstream-only The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/9:[----] [-C] 'block: Add blk_name_taken()' 002/9:[----] [--] 'block: Add blk_next_inserted()' 003/9:[----] [--] 'block: Add blk_commit_all() and blk_invalidate_cache_all()' 004/9:[0008] [FC] 'block: Use BlockBackend more' 005/9:[0025] [FC] 'blockdev: Add list of monitor-owned BlockBackends' 006/9:[----] [-C] 'blockdev: Remove blk_hide_on_behalf_of_do_drive_del()' 007/9:[----] [--] 'block: Make bdrv_drain_one() public' 008/9:[----] [-C] 'block: Move some bdrv_*_all() functions to BB' 009/9:[----] [-C] 'block: Remove bdrv_states' Max Reitz (9): block: Add blk_name_taken() block: Add blk_next_inserted() block: Add blk_commit_all() and blk_invalidate_cache_all() block: Use BlockBackend more blockdev: Add list of monitor-owned BlockBackends blockdev: Remove blk_hide_on_behalf_of_do_drive_del() block: Make bdrv_drain_one() public block: Move some bdrv_*_all() functions to BB block: Remove bdrv_states block.c | 138 +++------------------------ block/block-backend.c | 211 +++++++++++++++++++++++++++++++++-------- block/qapi.c | 13 ++- block/snapshot.c | 3 +- blockdev.c | 19 ++-- cpus.c | 7 +- include/block/block.h | 5 - include/block/block_int.h | 4 +- include/sysemu/block-backend.h | 8 +- migration/block.c | 10 +- migration/migration.c | 4 +- monitor.c | 13 ++- qemu-char.c | 3 +- qemu-io.c | 2 +- qmp.c | 9 +- savevm.c | 66 +++++++------ stubs/Makefile.objs | 2 +- stubs/bdrv-commit-all.c | 7 -- stubs/blk-commit-all.c | 7 ++ xen-mapcache.c | 3 +- 20 files changed, 293 insertions(+), 241 deletions(-) delete mode 100644 stubs/bdrv-commit-all.c create mode 100644 stubs/blk-commit-all.c -- 2.1.0