[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH 0/8] blockdev: (Nearly) free clean-up work
From: |
Max Reitz |
Subject: |
[Qemu-block] [PATCH 0/8] blockdev: (Nearly) free clean-up work |
Date: |
Tue, 10 Nov 2015 04:44:15 +0100 |
After a lot has been restructed in the block layer in the past, we can
now reap at least one of the fruits: Make bdrv_open() return a BDS!
I tried to squeeze patch 8 of this series into my bdrv_close_all()
series but noticed that won't work because bdrv_open_inherit() still has
one instance of bdrv_close() which is actually pretty reasonable.
Therefore, that was impossible there.
However, that instance exists only because bdrv_open_inherit() does not
always create a new BDS but sometimes takes an existing one and opens a
file "into" that BDS, basically. That is ugly and we've tried to get rid
of that for a long time now. Then I noticed that nearly all the callers
of bdrv_open()/bdrv_open_inherit() no longer need that feature, there
was only one show-stopper left: blk_new_open(). That functions creates a
BDS using blk_new_with_bs(), which in turn uses bdrv_new_root() instead
of a plain bdrv_new().
However, the sole difference between bdrv_new_root() and bdrv_new() is
gone as of my "Further BlockBackend work" series, so we can make
blk_new_open() reuse the BDS creation capabilities of bdrv_open() as
well. And that's it!
And with bdv_open_inherit() always creating the BDS, we no longer need
to call bdrv_close() there, which allows us to assert that any BDS given
to bdrv_close() will have a refcount of 0 (i.e. is about to be deleted).
As hinted before, this series depends on v2 of my previous series
"blockdev: Further BlockBackend work".
Max Reitz (8):
qapi: Drop QERR_UNKNOWN_BLOCK_FORMAT_FEATURE
block: Drop useless bdrv_new() calls
block: Let bdrv_open_inherit() return the snapshot
block: Drop BB name from bad option error
block: Drop blk_new_with_bs()
block: Drop bdrv_new_root()
block: Make bdrv_open() return a BDS
block: Assert !bs->refcnt in bdrv_close()
block.c | 139 ++++++++++++++++++---------------------------
block/block-backend.c | 31 +++-------
block/parallels.c | 9 +--
block/qcow.c | 15 ++---
block/qcow2.c | 53 ++++++-----------
block/qed.c | 18 ++----
block/sheepdog.c | 16 +++---
block/vdi.c | 7 +--
block/vhdx.c | 8 +--
block/vmdk.c | 31 +++++-----
block/vpc.c | 7 +--
block/vvfat.c | 9 ++-
blockdev.c | 38 +++++--------
include/block/block.h | 6 +-
include/qapi/qmp/qerror.h | 3 -
tests/qemu-iotests/036.out | 16 +++---
tests/qemu-iotests/051.out | 8 +--
17 files changed, 153 insertions(+), 261 deletions(-)
--
2.6.2
- [Qemu-block] [PATCH 0/8] blockdev: (Nearly) free clean-up work,
Max Reitz <=
- [Qemu-block] [PATCH 1/8] qapi: Drop QERR_UNKNOWN_BLOCK_FORMAT_FEATURE, Max Reitz, 2015/11/09
- [Qemu-block] [PATCH 2/8] block: Drop useless bdrv_new() calls, Max Reitz, 2015/11/09
- [Qemu-block] [PATCH 3/8] block: Let bdrv_open_inherit() return the snapshot, Max Reitz, 2015/11/09
- [Qemu-block] [PATCH 4/8] block: Drop BB name from bad option error, Max Reitz, 2015/11/09
- [Qemu-block] [PATCH 5/8] block: Drop blk_new_with_bs(), Max Reitz, 2015/11/09
- [Qemu-block] [PATCH 6/8] block: Drop bdrv_new_root(), Max Reitz, 2015/11/09
- [Qemu-block] [PATCH 8/8] block: Assert !bs->refcnt in bdrv_close(), Max Reitz, 2015/11/09
- [Qemu-block] [PATCH 7/8] block: Make bdrv_open() return a BDS, Max Reitz, 2015/11/09