From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 In-Reply-To: References: <75ea74312ad96f76de8cd4b3291ffb1d@brasstown.quanstro.net> <1e4bfd86eef85bbf4434f8ef22b6fed7@plug.quanstro.net> <948e9cbd967366d058ac8a033ce93f5f@plug.quanstro.net> <53acf6ebfa4f01bbe09d6ed494ef68b1@plug.quanstro.net> Date: Fri, 12 Nov 2010 11:55:55 -0800 Message-ID: From: ron minnich To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Content-Type: text/plain; charset=ISO-8859-1 Subject: Re: [9fans] p9p factotum available for plan 9 Topicbox-Message-UUID: 7b0dac96-ead6-11e9-9d60-3106f5b1d025 I never much liked .u so I'm happy to see it go away :-) But I wonder what the failure of .u says about the version mechanism. In the 9p stuff I did in 1998 for linux I used the SunRPC way of handling protocol variants: client asked to do an op (e.g. Treadlink) and got back an ENOSUPPORT if server couldn't do that. Client would then shortstop the operation on the client side from that point on, as it knew what the server could and could not do. That worked well for both me and SunRPC (i.e. NFS). (I had no choice at the time; this was a little bit before Tversion existed). That might work but Plan 9 servers currently silently discard T messages they don't understand, so this way of determining server capabilities can't be used. My impression is that if you see .L, then extra operations are supported and you assume they'll work; is that true? There are other issues with the versioning mechanism however. What if a server supports capabilities of two versions, e.g. .L and .op? Do we reply 9p2000.L+9p2000.op It seems we made the first real test of versioning with .u and things did not go as we hoped ... As for the uid/gid mess, the simplest way out it seemed to me was to send the numbers as strings; done. People can just put the strings for the numbers in /etc/passwd; that's what I did anyway. And, finally, errno and errstr. Plan 9 speaks strings, Unix integers, Windows strings IIRC. The solution for unix clients was reverse mapping of errstr to errno, which has not worked well for me. I'd still prefer the format I used before: sprint(rmsg.error, "%d:%s", errno, errstr); and let the client figure out which of these two things it wants. Obviously useless for Plan 9 servers but very useful for *nix clients/servers, which only want to talk errno. Even if the Plan 9 client sees an errstr in the number:message format, that could be helpful to users. So, sorry to disinter this old discussion, but my $.02 and the pinon coffee just woke me up a little. ron