[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Requesting to Review of the proposal - Improved NFS Implementation

From: Madhusudan C.S
Subject: Requesting to Review of the proposal - Improved NFS Implementation
Date: Wed, 2 Apr 2008 16:07:38 +0530

Hi Olaf and all,
                       My proposal is given below. I request you to review it and give suggestions on any kind of mistakes so that I can improve my proposal.


   I wish to provide an improved Network Filesystem support to "the
Hurd". This implementation will be an improvement for the partly
implemented NFS that exists in the Hurd already. Though the exisiting
implementation supports only NFSv2 it has a few problems with it too.
So the aim of this project is to improve the support for NFSv2 by
adding features not present in the current implementation and fixing
the bugs that exist. It also includes adding support for NFSv3. Bug
Fixing includes several things like providing full support for Hurd's
NFS to work with GNU/Linux server in all aspects. All the features
necessary to make the NFSv2 implementation complete will be added.
Implementing NFSv3 support includes adding all the features that are
specified in NFSv3 protocol standard i.e. RFC 1813 like support for
asynchronous writes on the server, performance improvements among
other things.

Project Details

   To begin with, I will work on the existing NFSv2 implementation on
the Hurd to make it work in all the aspects. I will work on it to so that
it fully implements all the specifications provided in NFSv2 protocol
standard i.e RFC 1094. I will work on improving the performance of
NFSv2 and fixing bugs that exist on the server side. Since many people
are interested in having the Hurd client communicate with GNU/Linux
server it is more importantly necessary to add all the features to
NFSv2. This includes adding NFS Filesystem model which implements
filesystem organization. This stage also includes completing the
support for the Mount protocol which is employed to mount a filesystem
and create handles to access files on it. Also included are the features
to handle error control and caching mechanism on the client side. All
the NFS server procedures(its nearly a misnomer since server
procedures are actions that a client may take on files residing on a
server) are implemented. Some of them include null, getattr, setattr,
root, lookup, statfs, readdir etc which are not present in the current
implementation but part of the NFS's Remote Procedure Calls(RPC).

   The next stage of this project starts with implementing the core
NFSv3 protocols. The most necessary specifications provided in RFC
1813 needed to for a working NFSv3 will be implemented. This mainly
   1.  Adding support for TCP as a Transport mechanism which was a
        major addition for NFSv3 in addition to the existing UDP
   2.  Support for asynchronous writes on the server, to improve write
   3.  Additional file attributes in many replies including fourth set of
        permission bits
  4.  Adding READDIRPLUS operation, to get file handles and
       attributes along with file names when scanning a directory
  5.  Adding NFSv3's new server procedures such as mknod, pathconf,
       commit, access
  6.  Improved file locking support with GNU/Linux
  7.  Improving Performance

   Other Hurd specific functions such as adding support for
   1.  Changing a file's author
   2.  Passive translators

    are also implemented.

   Other features will be added to this list after studying their
feasibilities and necessities.

   With these features of NFS ready, the next stage of the project is
to test these implementations with the GNU/Linux servers so as to
ensure that the prime goal of the project which is providing NFS
support with GNU/Linux is accomplished because it is the most
necessary feature. Bugs that arise during testing are fixed. Then if
time permits the features needed to run the Hurd's NFS Server are
Benefits to the Hurd

   Implementing a feature complete NFS client to Hurd means that a
long time requirement of easily accessing other systems from Hurd is
made easy. It means that users can now use NFS to access the files
that they have stored on GNU/Linux machines on networks. They can
resume their partly finished work on the Hurd, if at all they have
stored it in files in other systems. So file resources can be shared.

   Providing TCP support for Transport is also a huge gain to Hurd since
transfers are now reliable and more secure. This also means that NFS
on the Hurd can also be used over WAN.

   Also this project provides developers with a basic platform to
implement NFSv4 since v4 reuses most of the parts of NFSv2 and v3.


   1.  Completed NFSv2 implementation with support for all the
       features specified in RFC . This also includes implementing all the
       unimplemented RPCs.
   2.  A usable NFSv3 implementation with v3's additional features and
   3.  NFS implementation that can use TCP as a transport mechanism
        and Hurd specific functionalities.

   Non-code deliverables include documentation of the code of the
Hurd's NFS implemented during the course of the project which
explains in detail the implementation of each of the functionalities.
Also includes a how-to guide for setting up NFS on the Hurd.

Project Schedule

   The project is planned to be completed in 8 major phases. Every phase
includes documenting the progress during that phase, so it is not
mentioned specifically at each phase. The timeline and duration of each
of these phases is given below:

   1.  Initial preparation and Bug fixing
       ( Community Bonding Period: has already started – May 25th)
           This phase involves gaining skills in Network protocols
            implementation. Going through the existing NFSv2 code to
            understand its implementation and reading papers and
            documentations related to NFS and related protocols in
            general. Fixing few small bugs in the existing code to improve
            performance and so on.

   2.  Analysis and Design I ( May 26th – June 1st )
           Involves the analysis of  existing code. Interacting with the
           mentor, the Hurd community and other people involved in
           implementation of NFS on other platforms to draw the exact
           design of the proposed NFSv2 implementation. Preparing
           algorithms required for NFSv2 implementation completion.

   3.  Coding Phase I ( June 2nd – June 16th )
           Involves fixing bugs in the existing NFSv2 implementation and
           coding the features that are planned in the design phase.

   4.  Testing Phase I ( June 17th – June 27th )
           Testing the features implemented in the last phase. Requesting
            community to help me in testing and reviewing. Testing with
            GNU/Linux servers. Incorporating all the necessary changes
            and fixing bugs.

   5.  Analysis and Design II ( June 28th – July 7th )
           Analyzing the requirements for NFSv3 implementation.
           Interacting with the mentor, the Hurd community to draw the
           exact design of the proposed NFSv3 implementation. Preparing
           algorithms required for NFSv3 implementation.

   6.  Coding Phase II ( July 8th – July 31st )
           Coding the features that are planned for NFSv3 in the previous
           phase. Since it involves coding NFSv3 features from scratch it
           requires more time than other stages. Adding 4th set of
           permission bits will be completed before mid-term evaluation

   7.  Final Testing and evaluation (August 1st – August 8th )
           Closely interacting with the community and requesting them to
           help me in overall testing and reviewing and making changes as
           per their suggestions. Testing with the other systems' NFS
           servers too and consolidating the Documentation.

   8.  Packaging and Wrap-up (August 9th -  August 18th )
           Final phase of testing and fixing remaining bugs. Working with
           the community to merge the project with the CVS HEAD of
           Hurd. Documentation reviews, making necessary changes as per
           the suggestions and wrapping up the documentation.


   I am already comfortable with the bug-hurd mailing-list and IRC
channel #hurd@freenode.net. I will be able to contact my mentor in
above two forms and will also be available through google-talk(jabber)
and yahoo! chats. I am also comfortable with CVS and SVN since I was
the SVN administrator for 2 academic projects.

About Me

   I am a 3rd Year undergraduate student pursuing Information Science
and Engineering as a major at BMSCE, Bangalore. Have been using and
advocating Free Software(FS henceforth) from past 5 years. Have been
one of the main coordinators of BMSLUG. Have coordinated various
events including Swatantra Tech Fest - an all day FS Fest, Session by
RMS, Hack Fest (a competition in our college). Have won few Coding
Competitions since I was 13 years, the major one being a State level
BASIC Programming competition at 13.

   Have been actively participating in various FS Communities by
reporting bugs to communities like Ubuntu, GNOME etc and writing
patches for Drupal.

   Have a fair understanding of concepts of C and have nearly 3 years
of programming experience in C. Have basic understanding of the Hurd
architecture and have gone through the Hurd Hacking Guide. Also have
the knowledge of  Networks, its architecture and most of the
associated popular protocols.

   Have a working installation of Debian GNU/Hurd. I don't have words
to say about it. I am out of words to describe it. Its simply amazing. I
have been compiling few small programs and few translators on it.

   Since I am working with few FS communities I have a good
understanding of FS Development methodologies of communicating with
people, using Issue trackers like Bugzilla, Wishlists, Changelogs, coding
and testing.

   Lastly I want to express my deep commitment for this project and
Hurd. I'm fully available this summer without any other commitments,
will tune my day/night rhythm as per my mentor's requirement and
assure a dedicated work of 50 hours/week. Also I'll assure that I'll
continue my commitments with Hurd well after GSoC. If you find any
part of this proposal is not clear please contact me.

Important Links and URLs

   My Hurd blog : http://madhusudancs.byethost13.com/hurd
   My CV : http://madhusudancs.byethost13.com/sites/default/files

Thanks and regards,

P.S: I will put a more detailed version of this proposal in my Hurd blog as
soon as I come back on Monday. Please give suggestions on any kind
 of mistakes. Kindly co-operate

reply via email to

[Prev in Thread] Current Thread [Next in Thread]