From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=40078 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OJrEV-0007Ql-FS for qemu-devel@nongnu.org; Wed, 02 Jun 2010 12:56:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OJrE4-0005gQ-1b for qemu-devel@nongnu.org; Wed, 02 Jun 2010 12:55:43 -0400 Received: from oxygen.pond.sub.org ([213.239.205.148]:35278) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OJrE3-0005fQ-PA for qemu-devel@nongnu.org; Wed, 02 Jun 2010 12:55:31 -0400 Received: from blackfin.pond.sub.org (pD9E39C24.dip.t-dialin.net [217.227.156.36]) by oxygen.pond.sub.org (Postfix) with ESMTPA id BA9F0276FF1 for ; Wed, 2 Jun 2010 18:55:29 +0200 (CEST) From: Markus Armbruster Date: Wed, 2 Jun 2010 18:55:18 +0200 Message-Id: <1275497729-13120-3-git-send-email-armbru@redhat.com> In-Reply-To: <1275497729-13120-1-git-send-email-armbru@redhat.com> References: <1275497729-13120-1-git-send-email-armbru@redhat.com> Subject: [Qemu-devel] [PATCH 02/13] block: Decouple block device "commit all" from DriveInfo List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, kraxel@redhat.com 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 --- 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