dom0/udev: allow only one xenstore-write at the time

This apparently causes deadlocks when many xenstore-write (one for each block
device) called at the same time.
This commit is contained in:
Marek Marczykowski 2013-01-27 00:02:30 +01:00
parent c9cec94f00
commit bf059e4050

View File

@ -43,6 +43,17 @@ fi
if [ -d /sys/$DEVPATH/loop ]; then
DESC=$(cat /sys/$DEVPATH/loop/backing_file)
fi
# Get lock only in dom0 - there are so many block devices so it causes xenstore
# deadlocks sometimes.
if [ -f /etc/qubes-release ]; then
# Skip xenstore-write if cannot obtain lock. This can mean very early system startup
# stage without /run mounted (or populated). Devices will be rediscovered later
# by qubes-core startup script.
exec 9>>/var/run/qubes/block-xenstore.lock || exit 0
flock 9
fi
xenstore-write "$XS_KEY/desc" "$DESC" "$XS_KEY/size" "$SIZE" "$XS_KEY/mode" "$MODE"
echo QUBES_EXPOSED=1