On 22 May 2015, at 14:09, Patrick Welche <[email protected]> wrote: > There are a load of locking PRs involving vnd. I thought I would have a > stab at converting vnd to use condvars and mutexes (mutices?) as a first > step. I cobbled something together which allows me to > > vnconfig vnd0 /tmp/foo.img > disklabel -r -w vnd0 vndtest > newfs /dev/vnd0b > mount /dev/vnd0b /mnt > cd /mnt > echo hello > foo > cat foo > df -h . > umount /mnt > > with a LOCKDEBUG kernel, so I may have guessed right, but I haven't found > any documentation on The Right Way, so please review carefully, assume > the worst, and tell me how to do it better! > > Things to ponder: > - there was some sort of start kernel thread, thread sets variable, > meanwhile loop waiting for variable to be set. I removed that. On > the other hand I added a MUSTJOIN for the kernel thread exiting > side of things. > - given that vnd is a pseudo-device, do I need an extra lock to care > of device creation/destruction? (What am I protecting against?
One thread creating a device while it gets unconfigured by other thread? - make sure all accesses to sc_flags etc. are protected by mutex. - locking is no longer interruptible (no PCATCH / cv_wait_sig), not sure if this is a problem. - keep the first blank line for functions without locals. - do the white space change with a separate commit. Otherwise looks like a good starting point. -- J. Hannken-Illjes - [email protected] - TU Braunschweig (Germany)
