[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 02/13] block: Decouple block device "commit all" fro
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH 02/13] block: Decouple block device "commit all" from DriveInfo |
Date: |
Wed, 2 Jun 2010 18:55:18 +0200 |
do_commit() and mux_proc_byte() iterate over the list of drives
defined with drive_init(). This misses host block devices defined by
other means. Such means don't exist now, but will be introduced later
in this series.
Change them to use new bdrv_commit_all(), which iterates over all host
block devices.
Signed-off-by: Markus Armbruster <address@hidden>
---
block.c | 9 +++++++++
block.h | 1 +
blockdev.c | 16 ++++++++--------
qemu-char.c | 7 +------
4 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/block.c b/block.c
index 5c2f3d9..1bef649 100644
--- a/block.c
+++ b/block.c
@@ -788,6 +788,15 @@ ro_cleanup:
return ret;
}
+void bdrv_commit_all(void)
+{
+ BlockDriverState *bs;
+
+ QTAILQ_FOREACH(bs, &bdrv_states, list) {
+ bdrv_commit(bs);
+ }
+}
+
/*
* Return values:
* 0 - success
diff --git a/block.h b/block.h
index 9ceb64d..49e3dcf 100644
--- a/block.h
+++ b/block.h
@@ -85,6 +85,7 @@ int64_t bdrv_getlength(BlockDriverState *bs);
void bdrv_get_geometry(BlockDriverState *bs, uint64_t *nb_sectors_ptr);
void bdrv_guess_geometry(BlockDriverState *bs, int *pcyls, int *pheads, int
*psecs);
int bdrv_commit(BlockDriverState *bs);
+void bdrv_commit_all(void);
int bdrv_change_backing_file(BlockDriverState *bs,
const char *backing_file, const char *backing_fmt);
void bdrv_register(BlockDriver *bdrv);
diff --git a/blockdev.c b/blockdev.c
index 0df16c7..60c9211 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -486,16 +486,16 @@ DriveInfo *drive_init(QemuOpts *opts, int
default_to_scsi, int *fatal_error)
void do_commit(Monitor *mon, const QDict *qdict)
{
- int all_devices;
- DriveInfo *dinfo;
const char *device = qdict_get_str(qdict, "device");
+ BlockDriverState *bs;
- all_devices = !strcmp(device, "all");
- QTAILQ_FOREACH(dinfo, &drives, next) {
- if (!all_devices)
- if (strcmp(bdrv_get_device_name(dinfo->bdrv), device))
- continue;
- bdrv_commit(dinfo->bdrv);
+ if (!strcmp(device, "all")) {
+ bdrv_commit_all();
+ } else {
+ bs = bdrv_find(device);
+ if (bs) {
+ bdrv_commit(bs);
+ }
}
}
diff --git a/qemu-char.c b/qemu-char.c
index 87628ea..9b69d92 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -351,12 +351,7 @@ static int mux_proc_byte(CharDriverState *chr, MuxDriver
*d, int ch)
break;
}
case 's':
- {
- DriveInfo *dinfo;
- QTAILQ_FOREACH(dinfo, &drives, next) {
- bdrv_commit(dinfo->bdrv);
- }
- }
+ bdrv_commit_all();
break;
case 'b':
qemu_chr_event(chr, CHR_EVENT_BREAK);
--
1.6.6.1
- [Qemu-devel] [PATCH 00/13] New -blockdev to define a host block device, Markus Armbruster, 2010/06/02
- [Qemu-devel] [PATCH 03/13] monitor: Make "commit FOO" complain when FOO doesn't exist, Markus Armbruster, 2010/06/02
- [Qemu-devel] [PATCH 12/13] blockdev: Factor option value parsers out of drive_init(), Markus Armbruster, 2010/06/02
- [Qemu-devel] [PATCH 01/13] block: Move error actions from DriveInfo to BlockDriverState, Markus Armbruster, 2010/06/02
- [Qemu-devel] [PATCH 04/13] block: New bdrv_next(), Markus Armbruster, 2010/06/02
- [Qemu-devel] [PATCH 05/13] block: Decouple savevm from DriveInfo, Markus Armbruster, 2010/06/02
- [Qemu-devel] [PATCH 11/13] qemu-option: New qemu_opt_next(), qemu_opt_name(), Markus Armbruster, 2010/06/02
- [Qemu-devel] [PATCH 07/13] blockdev: Means to destroy blockdev only if made with drive_init(), Markus Armbruster, 2010/06/02
- [Qemu-devel] [PATCH 02/13] block: Decouple block device "commit all" from DriveInfo,
Markus Armbruster <=
- [Qemu-devel] [PATCH 09/13] blockdev: drive_get_by_id() is no longer used, remove, Markus Armbruster, 2010/06/02
- [Qemu-devel] [PATCH 06/13] blockdev: Give drives internal linkage, Markus Armbruster, 2010/06/02
- [Qemu-devel] [PATCH 10/13] qemu-option: New qemu_opts_reset(), Markus Armbruster, 2010/06/02
- [Qemu-devel] [PATCH 08/13] qdev: Decouple qdev_prop_drive from DriveInfo, Markus Armbruster, 2010/06/02
- [Qemu-devel] [PATCH 13/13] blockdev: New -blockdev to define a host block device, Markus Armbruster, 2010/06/02