diff options
-rw-r--r-- | blockdev.c | 18 | ||||
-rw-r--r-- | device-hotplug.c | 2 | ||||
-rw-r--r-- | hw/ide/piix.c | 2 | ||||
-rw-r--r-- | include/sysemu/blockdev.h | 4 |
4 files changed, 5 insertions, 21 deletions
diff --git a/blockdev.c b/blockdev.c index 0ed03b770f..9b0f8ac45e 100644 --- a/blockdev.c +++ b/blockdev.c @@ -106,7 +106,7 @@ void blockdev_auto_del(BlockDriverState *bs) DriveInfo *dinfo = drive_get_by_blockdev(bs); if (dinfo && dinfo->auto_del) { - drive_put_ref(dinfo); + drive_del(dinfo); } } @@ -213,7 +213,7 @@ static void bdrv_format_print(void *opaque, const char *name) error_printf(" %s", name); } -static void drive_del(DriveInfo *dinfo) +void drive_del(DriveInfo *dinfo) { if (dinfo->opts) { qemu_opts_del(dinfo->opts); @@ -226,19 +226,6 @@ static void drive_del(DriveInfo *dinfo) g_free(dinfo); } -void drive_put_ref(DriveInfo *dinfo) -{ - assert(dinfo->refcount); - if (--dinfo->refcount == 0) { - drive_del(dinfo); - } -} - -void drive_get_ref(DriveInfo *dinfo) -{ - dinfo->refcount++; -} - typedef struct { QEMUBH *bh; BlockDriverState *bs; @@ -497,7 +484,6 @@ static DriveInfo *blockdev_init(const char *file, QDict *bs_opts, dinfo->bdrv->open_flags = snapshot ? BDRV_O_SNAPSHOT : 0; dinfo->bdrv->read_only = ro; dinfo->bdrv->detect_zeroes = detect_zeroes; - dinfo->refcount = 1; QTAILQ_INSERT_TAIL(&drives, dinfo, next); bdrv_set_on_error(dinfo->bdrv, on_read_error, on_write_error); diff --git a/device-hotplug.c b/device-hotplug.c index fc09d10fdb..e6a1ffb9fa 100644 --- a/device-hotplug.c +++ b/device-hotplug.c @@ -76,6 +76,6 @@ void drive_hot_add(Monitor *mon, const QDict *qdict) err: if (dinfo) { - drive_put_ref(dinfo); + drive_del(dinfo); } } diff --git a/hw/ide/piix.c b/hw/ide/piix.c index 40757eb001..8651726f52 100644 --- a/hw/ide/piix.c +++ b/hw/ide/piix.c @@ -184,7 +184,7 @@ int pci_piix3_xen_ide_unplug(DeviceState *dev) } bdrv_close(di->bdrv); pci_ide->bus[di->bus].ifs[di->unit].bs = NULL; - drive_put_ref(di); + drive_del(di); } } qdev_reset_all(DEVICE(dev)); diff --git a/include/sysemu/blockdev.h b/include/sysemu/blockdev.h index 0fdbd689c1..23a5d10c68 100644 --- a/include/sysemu/blockdev.h +++ b/include/sysemu/blockdev.h @@ -43,21 +43,19 @@ struct DriveInfo { QemuOpts *opts; char *serial; QTAILQ_ENTRY(DriveInfo) next; - int refcount; }; DriveInfo *drive_get(BlockInterfaceType type, int bus, int unit); DriveInfo *drive_get_by_index(BlockInterfaceType type, int index); int drive_get_max_bus(BlockInterfaceType type); DriveInfo *drive_get_next(BlockInterfaceType type); -void drive_get_ref(DriveInfo *dinfo); -void drive_put_ref(DriveInfo *dinfo); DriveInfo *drive_get_by_blockdev(BlockDriverState *bs); QemuOpts *drive_def(const char *optstr); QemuOpts *drive_add(BlockInterfaceType type, int index, const char *file, const char *optstr); DriveInfo *drive_new(QemuOpts *arg, BlockInterfaceType block_default_type); +void drive_del(DriveInfo *dinfo); /* device-hotplug */ |