Annotation of wikisrc/projects/project/fs-services.mdwn, revision 1.9

1.1       jmmv        1: [[!template id=project
                      2: 
1.9     ! dholland    3: title="File systems as network services using puffs"
1.1       jmmv        4: 
                      5: contact="""
1.7       dholland    6: [tech-userlevel](mailto:tech-userlevel@NetBSD.org),
                      7: [tech-kern](mailto:tech-kern@NetBSD.org)
1.1       jmmv        8: """
                      9: 
1.4       dholland   10: category="filesystems"
1.7       dholland   11: difficulty="hard"
1.1       jmmv       12: duration="3 months"
                     13: 
                     14: description="""
1.8       dholland   15: The existing puffs protocol gives a way to forward kernel-level file
                     16: system actions to a userspace process. This project generalizes that
                     17: protocol to allow forwarding file system actions arbitrarily across a
                     18: network. This will make it possible to mount any kernel file system
                     19: type from any location on the network, given a suitable arrangement of
                     20: components.
1.1       jmmv       21: 
1.8       dholland   22: The file system components to be used are [puffs](http://www.netbsd.org/docs/puffs/) and [rump](http://www.netbsd.org/docs/puffs/rump.html). puffs is used to forward local file system requests from the kernel to userspace and rump is used to facilitate running the kernel file system in userspace as a service daemon.
1.1       jmmv       23: 
1.5       mspo       24: The milestones are the following:
1.1       jmmv       25: 
1.8       dholland   26: * Write the necessary code to be able to forward requests from one source to another. This involves most likely reworking a bit of the libpuffs option parsing code and creating a puffs client (say, mount_puffs) to be able to forward requests from one location to another. The puffs protocol should be extended to include the necessary new features or a new protocol invented.
1.1       jmmv       27: 
1.8       dholland   28:     Proof-of-concept code for this has already been written. (Where is it?)
1.1       jmmv       29: 
                     30: * Currently the puffs protocol used for communication between the kernel and userland is machine dependent. To facilitate forwarding the protocol to remote hosts, a machine independent version must be specified.
                     31: 
                     32: * To be able to handle multiple clients, the file systems must be converted to daemons instead of being utilities. This will also, in the case of kernel file system servers, include adding locking to the communication protocol.
                     33: 
                     34: The end result will look something like this:
                     35: 
                     36:     # start serving ffs from /dev/wd0a on port 12675
                     37:     onehost> ffs_serv -p 12675 /dev/wd0a
                     38:     # start serving cd9660 from /dev/cd0a on port 12676
                     39:     onehost> cd9660_serv -p 12675 /dev/cd0a
                     40:    
                     41:     # meanwhile in outer space, mount anotherhost from port 12675
                     42:     anotherhost> mount_puffs -t tcp onehost:12675 /mnt
                     43:     anotherhost> mount
                     44:     ...
                     45:     anotherhost:12675 on /mnt type <negotiated>
                     46:     ...
                     47:     anotherhost> cd /mnt
                     48:     anotherhost> ls
                     49:       ... etc
                     50: 
1.8       dholland   51: The implementor should have some familiarity with file systems and network services.
                     52: 
                     53: Any proposal should include answers to at least the following questions:
                     54: 
                     55: * How is this different from NFS?
                     56: 
                     57: * How is the protocol different from 9p?
                     58: 
                     59: * How is this scheme going to handle the hard things that NFS doesn't do very well, such as distributed cache consistency?
                     60: 
                     61: * Given industry trends, why is this project proposing a new protocol instead of conforming to the SOA model?
                     62: 
1.1       jmmv       63: """
                     64: ]]

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb