Hi Sebastian, Morita and other developers, I have studied Sheepdog pool/volume storage driver for libvirt and i have following questions. Please give me some suggestions. Thanks in advance ;-) 1, In libvirt/src/storage/storage_backend_sheepdog.c, i just find we realized create/delete/resize volume(send these parameters to let libvirtd receive and execute them). I cannot find the operations about snapshot, such as creating/deleting snapshot. I cannot also find the operations about opening/closing cache. 2, In the func create/delete/resize volume, we call func 'virCommandRun(cmd, NULL);' to run these commands, which i think the func send these parameters to daemon libvirtd and libvirtd send these parameters to Sheepdog, then Sheepdog executes them, right? 3, In func "virStorageBackendSheepdogCreateVol", it composes cmd like this "virCommandPtr cmd = virCommandNewArgList(COLLIE, "vdi", "create", vol->name, NULL);" then send create parameters. When Sheepdog receive these parameters, how Sheepdog create this volume? I find Sheepdog create a volume like this. $ qemu-img create sheepdog:Alice 256G 4, What are the essences of func "virStorageBackendSheepdogRefreshPool" and "virStorageBackendSheepdogRefreshVol"? In func "virStorageBackendSheepdogCreateVol", after craete volume operations, we call "virStorageBackendSheepdogRefreshVol". But in func "virStorageBackendSheepdogDeleteVol" and "virStorageBackendSheepdogResizeVol", we do not call "virStorageBackendSheepdogRefreshVol", why? 5, Actually, i am not clear about how QEMU receive these parameters (like create/delete/snapshot, etc) and execute the real jobs? Thanks for anyone's suggestions ;-) -- Thanks Harry Wei -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list