X-Git-Url: https://repo.jachan.dev/qemu.git/blobdiff_plain/666daa68234b5b1758652633cab07d5ca6046a5b..32a420243cd1d6d83bd3a248eebeb9a5ebb5101e:/blockdev.h diff --git a/blockdev.h b/blockdev.h index dfc9de19ae..2c9e7804c9 100644 --- a/blockdev.h +++ b/blockdev.h @@ -13,50 +13,44 @@ #include "block.h" #include "qemu-queue.h" +void blockdev_mark_auto_del(BlockDriverState *bs); +void blockdev_auto_del(BlockDriverState *bs); + +#define BLOCK_SERIAL_STRLEN 20 + typedef enum { + IF_DEFAULT = -1, /* for use with drive_add() only */ IF_NONE, IF_IDE, IF_SCSI, IF_FLOPPY, IF_PFLASH, IF_MTD, IF_SD, IF_VIRTIO, IF_XEN, IF_COUNT } BlockInterfaceType; -typedef enum { - BLOCK_ERR_REPORT, BLOCK_ERR_IGNORE, BLOCK_ERR_STOP_ENOSPC, - BLOCK_ERR_STOP_ANY -} BlockInterfaceErrorAction; - -#define BLOCK_SERIAL_STRLEN 20 - -typedef struct DriveInfo { +struct DriveInfo { BlockDriverState *bdrv; char *id; const char *devaddr; BlockInterfaceType type; int bus; int unit; + int auto_del; /* see blockdev_mark_auto_del() */ QemuOpts *opts; - BlockInterfaceErrorAction on_read_error; - BlockInterfaceErrorAction on_write_error; char serial[BLOCK_SERIAL_STRLEN + 1]; QTAILQ_ENTRY(DriveInfo) next; -} DriveInfo; - -#define MAX_IDE_DEVS 2 -#define MAX_SCSI_DEVS 7 - -extern QTAILQ_HEAD(drivelist, DriveInfo) drives; - -extern DriveInfo *drive_get(BlockInterfaceType type, int bus, int unit); -extern DriveInfo *drive_get_by_id(const char *id); -extern int drive_get_max_bus(BlockInterfaceType type); -extern void drive_uninit(DriveInfo *dinfo); -extern const char *drive_get_serial(BlockDriverState *bdrv); + int refcount; +}; -extern BlockInterfaceErrorAction drive_get_on_error( - BlockDriverState *bdrv, int is_read); +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); -extern QemuOpts *drive_add(const char *file, const char *fmt, ...); -extern DriveInfo *drive_init(QemuOpts *arg, int default_to_scsi, - int *fatal_error); +QemuOpts *drive_def(const char *optstr); +QemuOpts *drive_add(BlockInterfaceType type, int index, const char *file, + const char *optstr); +DriveInfo *drive_init(QemuOpts *arg, int default_to_scsi); /* device-hotplug */ @@ -67,5 +61,8 @@ int do_eject(Monitor *mon, const QDict *qdict, QObject **ret_data); int do_block_set_passwd(Monitor *mon, const QDict *qdict, QObject **ret_data); int do_change_block(Monitor *mon, const char *device, const char *filename, const char *fmt); +int do_drive_del(Monitor *mon, const QDict *qdict, QObject **ret_data); +int do_snapshot_blkdev(Monitor *mon, const QDict *qdict, QObject **ret_data); +int do_block_resize(Monitor *mon, const QDict *qdict, QObject **ret_data); #endif