xmlNodePtr source = NULL;
char *device_type = NULL;
char *ret = NULL;
+ char *startupPolicy = NULL;
if (!disk_node)
return NULL;
goto cleanup;
}
- if (type == VIRSH_UPDATE_DISK_XML_INSERT && source) {
- vshError(NULL, _("The disk device '%s' already has media"), target);
- goto cleanup;
- }
-
- /* remove current source */
if (source) {
+ if (type == VIRSH_UPDATE_DISK_XML_INSERT) {
+ vshError(NULL, _("The disk device '%s' already has media"), target);
+ goto cleanup;
+ }
+
+ startupPolicy = virXMLPropString(source, "startupPolicy");
+
+ /* remove current source */
xmlUnlinkNode(source);
xmlFreeNode(source);
source = NULL;
else
xmlNewProp(source, BAD_CAST "file", BAD_CAST new_source);
+ if (startupPolicy)
+ xmlNewProp(source, BAD_CAST "startupPolicy", BAD_CAST startupPolicy);
xmlAddChild(disk_node, source);
}
cleanup:
VIR_FREE(device_type);
+ VIR_FREE(startupPolicy);
return ret;
}