diff options
Diffstat (limited to 'blockdev.c')
-rw-r--r-- | blockdev.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/blockdev.c b/blockdev.c index e919566c16..b361fbb964 100644 --- a/blockdev.c +++ b/blockdev.c @@ -1739,6 +1739,7 @@ int do_drive_del(Monitor *mon, const QDict *qdict, QObject **ret_data) { const char *id = qdict_get_str(qdict, "id"); BlockDriverState *bs; + DriveInfo *dinfo; AioContext *aio_context; Error *local_err = NULL; @@ -1748,6 +1749,13 @@ int do_drive_del(Monitor *mon, const QDict *qdict, QObject **ret_data) return -1; } + dinfo = drive_get_by_blockdev(bs); + if (dinfo && !dinfo->enable_auto_del) { + error_report("Deleting device added with blockdev-add" + " is not supported"); + return -1; + } + aio_context = bdrv_get_aio_context(bs); aio_context_acquire(aio_context); @@ -1775,7 +1783,7 @@ int do_drive_del(Monitor *mon, const QDict *qdict, QObject **ret_data) bdrv_set_on_error(bs, BLOCKDEV_ON_ERROR_REPORT, BLOCKDEV_ON_ERROR_REPORT); } else { - drive_del(drive_get_by_blockdev(bs)); + drive_del(dinfo); } aio_context_release(aio_context); |