Cs is a multithreaded SCP
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 13 Jul 2015 19:49:20 +0000 (15:49 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Jul 2015 20:07:53 +0000 (16:07 -0400)
commit5b696b1fc6d4ff81812f54e4bd78d86b399e00d5
treef88874c8778055b506762a1d7c919653fae89a1c
parentf3ca5398565926766eec4a8e1b4eaf9f9285e7ea
Cs is a multithreaded SCP

This allows us to make requests, such as for www.google.com, without
deadlocking.  The deadlock was caused by cs opening /net/dns.  Cs has a
mount at /net.  The kernel would ask that mount to do a walk to ./dns.
Cs, when single threaded, would never get the request from the kernel.

Incidentally, this shows how easily the user can screw up their
namespace.  Any program that mounts into the namespace can perform a DoS
on anyone else looking up in that namespace.  The kthread in the kernel
would be attributed to whoever did the request, too, and not to the
daemon.  The moral is that mounters are somewhat privileged.

The other rule is that any program that serves a mount must always be
responsive to mount requests; either never block in servicing requests
or be multithreaded.
tests/cs.c