virsh snapshot-create-as的入口函数是cmdSnapshotCreateAs,cmdSnapshotCreateAs会将命令行参数组成buffer(内容是xml格式)然后调用virshSnapshotCreate。
virshSnapshotCreate->virDomainSnapshotCreateXML->qemuDomainSnapshotCreateXML。
qemuDomainSnapshotCreateXML->...->virDomainSnapshotDefParse中memorySnapshot = virXPathString("string(./memory/@snapshot)", ctxt);和memoryFile = virXPathString("string(./memory/@file)", ctxt);就是取输入的xml中的memory的snapshot和file属性,即是取virsh snapshot-create-as --memspec file=xxx,snapshot=yyy。
此处if (memorySnapshot) { def->memory = virDomainSnapshotLocationTypeFromString(memorySnapshot) } else if (memoryFile) { def->memory = VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL; } else ...。
然后qemuDomainSnapshotCreateXML->qemuDomainObjBeginAsyncJob,
然后qemuDomainSnapshotCreateXML->xml = qemuDomainDefFormatLive(..., priv->origCPU, ...),将虚拟机在线配置取出,注意qemuDomainDefFor
libvirt-6.3快照流程
最新推荐文章于 2024-04-19 10:36:18 发布