I am looking to develop a C implementation of a 9p file server on a Linux machine. There isn't enough documentation in the internet about 9p and I am not very experienced with implementing servers. My general design is as follows:
The server would just live in the user space and it will translate the 9p messages into a UNIX call.
Do you see any problems or have any recommendations regarding the proposed design? Are there any documentations that you can refer me to that will help me? How do you think I should debug my server and make sure it is working correctly.
9P (or the Plan 9 or Styx File System Protocol) is anetwork protocol developed for Bell Labs' Plan 9 distributed operating system as a means of connecting the components of a Plan 9 system. Files are key objects in Plan 9. 9. They represent windows ,network connections, processes , and just about anything else available in the operating system.
9P was revised for the fourth edition of Plan 9 under the name 9P2000 , which contains several improvements. Some of the improvements made are the removal of certain filename restrictions, the addition of a 'last modifier' metadata field for auth directories and files. [1] The latest version of the Inferno OS also uses 9P2000. The Inferno file protocol was originally called Styx, but technically it has always been a variant of 9P.
A server implementation of 9P for Unix, called u9fs , [2] [3] is included in the Plan 9 distribution. Mac9P provides anextension to the 9P OS X client kernel. [4] A client kernel driver that implements 9p with some extensions for Linux is part of the v9fs project. 9P and its derivatives have also found application in embedded environments, such as the Styx on a Brick project. [5]