to maintain integrity, use the new is-busy property to refuse service
For example, we now throw the .IsBusy exception on CreatePartitionTable()
if one of the existing partitions is busy.
Prior to this patch we'd happily create a new partition table even
though a dm-crypt target were holding one of the partitions. Which
broke in interesting ways when we issued BLKRRPART. This is because
the kernel is rather dumb and BLKRRPART won't work if any of the
partitions are busy.
The solution, I think, involves judicious use of the "add partition"
and "del partition" ioctls to spoonfeed the kernel this information.
Will try and do this next. As an upside, I think the annoying "remove
all partitions, then add them back again" artifact will go away with
this. So maybe it's all good. We'll see.