Hi,
bd_mount_sem can protect against only freezes and cannot protect against unfreezes. If multiple unfreezes run in parallel, the multiple up() for bd_mount_sem might occur incorrectly.Indeed. The bit flag would fix that because unfreeze could then check for the bit beeing set first. So that's probably the easiest way to go.
I think the bit flag is more efficient than the semaphore. So I will consider whether it can be used for the freeze feature. Cheers, Takashi