While I'm reviewing a thread about block device locking, here's another data point which were not touched before, as far as I remember. It is related.
What I'm talking is - when fsck/mkfs/... family of programs are run against a mounted (or in use by other means) device, they warn you about this, or refuse to run. This is done by opening the device in question with O_EXCL flag - it is meaningless for an existing block device so the meaning has been overloaded on linux. It is the _only_ way to ensure the device is opened exclusively, and it covers such obscure cases like opening whole disk when at least one partition is in use by, say, an in-kernel raid array or something like that. So while it is the only way, it is also a _reliable_ way too. And while before, we were talked mostly about inter-guest locking/protection, we also should think about protecting guest and host from each other. O_EXCEL is exactly this case -- to ensure _host_ is not using the devie in question when qemu is trying to open it. Worth using IMHO :) But it is a bit weird, since it only works on linux (actually I've no idea if it works on any other unix-like system) and only on block devices, and only at open(2) time. So we'll have to either trial and error, or open "normally", check if it's a block device and re-open with that flag set. Both aren't exactly nice, but should work. I'll see what can be done there, but if someone else who knows code better have immediate ideas or implementation, welcome. Thanks! /mjt