Yes.. I saw that, but I have to :)
The issue was solved by converting the hook to Python and using
'subprocess.Popen'. deadlock is gone, all looks good.
Regards
Shlomi
-----Original Message-----
From: Michal Privoznik [mailto:mprivozn@redhat.com]
Sent: Wednesday, November 06, 2013 5:17 PM
To: TSADOK, Shlomi (Shlomi)
Cc: libvirt-users(a)redhat.com
Subject: Re: [libvirt-users] Calling 'virsh' from within a hook script - avoid
deadlock?
On 06.11.2013 11:23, TSADOK, Shlomi (Shlomi) wrote:
I'm trying to create a hook that attaches several virtio-scsi
disks to
a starting vm,
and it seems like the hook enters a deadlock while attempting to do so.
Is there any workaround around this? Any better way, forking virsh
execution somehow?
Could anyone explain why this is creating a deadlock in the first place?
Isn't libvirt multithreaded?
Thanks for the help!
Shlomi
### hook script:
#!/bin/bash
enum_scsi() {
scsi_devices=`cd /dev;ls sd[^a]*`
}
gen_hba_xml() {
cat > ./hba.xml << EOF
<controller type='scsi' model='virtio-scsi'/>
EOF
}
passthrough_start() {
# create virtio-scsi HBA
gen_hba_xml
virsh attach-device --persistent $domain_name ./hba.xml
rm -f ./hba.xml
http://libvirt.org/hooks.html#recursive
Do not do this.
Michal