提交 f1690dc3 编写于 作者: P Peter Krempa

qemu: Extract more information about qemu drives

Extract whether a given drive has a tray and whether there is no image
inserted.

Negative logic for the image insertion is chosen so that the flag is set
only if we are certain of the fact.
上级 5f963d89
......@@ -307,7 +307,9 @@ struct _qemuDomainDiskPrivate {
struct qemuDomainDiskInfo {
bool removable;
bool locked;
bool tray;
bool tray_open;
bool empty;
int io_status;
};
......
......@@ -1832,11 +1832,13 @@ int qemuMonitorJSONGetBlockInfo(qemuMonitorPtr mon,
goto cleanup;
}
/* Don't check for success here, because 'tray_open' is presented iff
* medium is ejected.
*/
ignore_value(virJSONValueObjectGetBoolean(dev, "tray_open",
&info->tray_open));
/* 'tray_open' is present only if the device has a tray */
if (virJSONValueObjectGetBoolean(dev, "tray_open", &info->tray_open) == 0)
info->tray = true;
/* presence of 'inserted' notifies that a medium is in the device */
if (!virJSONValueObjectGetObject(dev, "inserted"))
info->empty = true;
/* Missing io-status indicates no error */
if ((status = virJSONValueObjectGetString(dev, "io-status"))) {
......
......@@ -114,6 +114,14 @@ const char *queryBlockReply =
" },"
" \"tray_open\": false,"
" \"type\": \"unknown\""
" },"
" {"
" \"io-status\": \"ok\","
" \"device\": \"drive-ide0-1-1\","
" \"locked\": false,"
" \"removable\": true,"
" \"tray_open\": false,"
" \"type\": \"unknown\""
" }"
" ],"
" \"id\": \"libvirt-10\""
......@@ -1404,12 +1412,27 @@ testQemuMonitorJSONqemuMonitorJSONGetBlockInfo(const void *data)
info->locked = true;
info->removable = true;
info->tray = true;
if (virHashAddEntry(expectedBlockDevices, "ide0-1-0", info) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
"Unable to create expectedBlockDevices hash table");
goto cleanup;
}
if (VIR_ALLOC(info) < 0)
goto cleanup;
info->removable = true;
info->tray = true;
info->empty = true;
if (virHashAddEntry(expectedBlockDevices, "ide0-1-1", info) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
"Unable to create expectedBlockDevices hash table");
goto cleanup;
}
if (qemuMonitorTestAddItem(test, "query-block", queryBlockReply) < 0)
goto cleanup;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册