Как видно из названия, я ищу способ передать дескриптор файла в стиле C (int, мое приложение использует socketpair, и мне нужно передать один из дескрипторов файлов) через API libvirt в запущенный процесс QEMU .
На данный момент я нашел следующее:
- virDomainOpenGraphics
- virDomainOpenGraphicsFD
к сожалению, они мне не помогают, поскольку они предназначены только для графики,
- virDomainCreateWithFiles
- virDomainCreateXMLWithFiles
к сожалению, они также не помогают, потому что согласно документации они работают только с технологией виртуализации на основе контейнеров.
Любой способ передать файловый дескриптор в qemu для своих собственных целей с помощью API libvirt был бы хорош. За исключением способа сделать это, мне, возможно, придется написать полностью настраиваемый бэкэнд для QEMU, однако мое приложение уже вложено в использование libvirt, и изменение будет значительным.
РЕДАКТИРОВАТЬ: дескриптор файла будет сокетом, он не используется непосредственно QEMU, у меня есть библиотека LD_PRELOAD-ed, которая использует этот сокет вместо того, чтобы делать некоторые хаки на месте, когда qemu пытается читать / писать в конкретный диск. «Хаки» различаются для каждого компьютера и для каждого запуска, запись этой информации на диск для каждой виртуальной машины перегружает систему хранения и вызывает очень значительное замедление, которое я не могу себе позволить.