QIO and catching rendez_sleep()
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 16 Apr 2014 01:31:44 +0000 (18:31 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 16 Apr 2014 01:36:04 +0000 (18:36 -0700)
commitbf37a9109663e508c660d25a633a768ed7cfef3f
tree5fecec5523759cac237ea1507029cdac4f9b5089
parentec5b24704160b5fa3efa7884f4d9b001ebcccbd0
QIO and catching rendez_sleep()

rendez_sleep() throws an error.  In qbwrite(), this is after the point
where we published the block b to the queue.  If the rendez_sleep() is
aborted, we'd error out and freeb(b), which is still on the queue.

Our use of error() in rendez_sleep() might be different than Plan 9.  We
already have slightly different rendez semantics.  Though many rendez
calls are clearly wrapped in waserrors() in other places.

I looked at some of the other rendez spots, like devmnt, and at least
put some warnings in place for the next time we have potential rendez
issues.
kern/drivers/dev/mnt.c
kern/src/kthread.c
kern/src/ns/qio.c