pin(1): don't end in empty section
mq: fix incorrect free in streamclose
mq: various code quality improvements
mq: limit root directory permission
mq: naming is hard, try again
mq: fix Tcreate handling
When handling Tcreate we forgot that create(2) must also act as open(2),
that is, the server must initialize the state associated with the open
file in the same way it does when receiving an Topen call.
It also turned out that we needed to manually replace the fid->file
pointer with the new File, and also set the response qid to the new
file's qid. This wasn't documented anywhere and it is likely that
the 9pfile(2) library can do it automatically, but until further
investigation we just do it ourselves.
mkfile: remove the 'package' target
It's simple enough to call tar manually.
mq: appease "non-interruptable temporary" warnings
These warnings are vacuous since an interrupted userspace process
has its state fully saved and restored, but they are more annoying
to look at than it is to rewrite the code that produces them.
pin: silence unimportant error
mq: clamp response to request size
mkfile: add 'package' target
README: provide links to formatted manual pages
mq: create an automatic root stream group
mq is quite often used in situations where only a single stream group
is needed. In these cases it is preferable to just create the streams
immediately under the mq mount, avoiding the need for redundant naming
and an extra level in hierarchy.
We allow this by allocating an automatic root stream group at startup.
pin: get rid of info messages
These are not useful now that specific flags are required for creating
and attaching -- the command itself documents exactly what is supposed
to happen and an error is printed if it didn't.
pin: make command line interface more explicit
pin: don't fork the namespace by default
Forking the namespace for a newly created pinned process makes sense if
perfect isolation from a parent is wanted or needed. However, doing
this by default prevents implementing a very useful namespace lifting
technique, where a process such as a shell is pinned but doesn't fork
the namespace, thus enabling anyone who can attach to this shell a
control over a foreign namespace -- something that generally isn't
possible to do in Plan 9.
This technique and examples are explained in the following article:
Not forking the namespace also follows the behaviour of the usual tools
such as the shell, which never fork if not explicitly told to do so.
This way, at least namespace-wise, running normal rc versus pinned rc is
Users can easily `rfork n` when the namespace forking *is* needed,
which also makes things more transparent.
mq: reading 'ctl' file reports current configuration