qemuBlockStorageSourceChainData encapsulates the backend of the disk for
startup and hotplug operations. Add the handling for the copy-on-read
filter so that the hotplug code doesn't need to have separate cleanup.
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
for (i = 0; i < data->nsrcdata; i++)
qemuBlockStorageSourceAttachDataFree(data->srcdata[i]);
+ virJSONValueFree(data->copyOnReadProps);
+ g_free(data->copyOnReadNodename);
+
g_free(data->srcdata);
g_free(data);
}
return -1;
}
+ if (data->copyOnReadProps) {
+ if (qemuMonitorBlockdevAdd(mon, &data->copyOnReadProps) < 0)
+ return -1;
+ }
+
return 0;
}
{
size_t i;
+ if (data->copyOnReadAttached)
+ ignore_value(qemuMonitorBlockdevDel(mon, data->copyOnReadNodename));
+
+
for (i = 0; i < data->nsrcdata; i++)
qemuBlockStorageSourceAttachRollback(mon, data->srcdata[i]);
}
struct _qemuBlockStorageSourceChainData {
qemuBlockStorageSourceAttachData **srcdata;
size_t nsrcdata;
+
+ virJSONValue *copyOnReadProps;
+ char *copyOnReadNodename;
+ bool copyOnReadAttached;
};
typedef struct _qemuBlockStorageSourceChainData qemuBlockStorageSourceChainData;