In bringing up VSTa clustering, I've run into a kernel IPC limitation which
is going to result in a minor but annoying change in VSTa 1.6 (due shortly).
In the current code, each time a "struct msg" is copied out to user space,
the m_op field has the M_READ field cleared. This is absolutely fine when
the message has arrived at its ultimate destination, because m_op can be
decoded, and the needed read/write implemented.
However, in the case where the message has arrived at a proxy agent, the
problem is that the agent can no longer tell if the request is a read with a
given buffer size (said size is required to be in m_arg), or a simple
message with no associated receive buffer required. The M_READ bit of the
m_op field needs to be preserved so that a message--read or write--can
traverse multiple hops without losing this context.
Thus, msg_receive() will now get a "struct msg" with the M_READ bit set if
the sender so specified. The new manifest constant bitmask MSG_MASK must be
applied before looking at m_op's value to compare/switch on filesystem
operation type (FS_READ, FS_WRITE, etc.). All servers in the distribution
have been updated, but if any of you have personal stashes of server code,
please keep this in mind when you start fooling with 1.6.
Enjoy!
Andy
Received on Mon Sep 15 12:01:08 1997
This archive was generated by hypermail 2.1.8 : Thu Sep 22 2005 - 15:12:43 PDT