This document outlines work in-progress and remaining work on the Linux kernel's NFS client. Related work on user-level tools and libraries and automounter support may be described in other documents.
Several tables below describe specific tasks we'd like to accomplish for the Linux NFS client. All tasks in one table are of the same priority (H, M, L), and are ordered within each table roughly by their priority relative to other tasks in the same table. Each task includes a description, an estimate of resources required (in developer months), and a list of interested parties. A set of test plans for each task will be provided later.
In addition, a number of tasks are captured under "unscheduled." These are controversial or low-priority issues that may or may not be promoted onto the of scheduled work. A table of "ongoing" tasks tracks housekeeping issues.
Finally, we include sections that describe medium-term issues and long term projects. Medium-term issues are tasks that may require more extensive changes or changes that involve several other parts of the kernel. These projects were originally targeted for the next development branch. Long term projects are important areas of work that are not ready to broken into specific tasks.
No. | Description | Lead developer | Resource estimate | Interested parties |
1 |
What to do about iput()/dput()/nfs_put_open_context() from within an rpciod callback?
iput() can sleep, so we can't call this in an rpciod context.
|
trondmy |
2 developer-month 2 test-month |
All - NFS client stability risk |
2 |
Generic correctness issues
|
trondmy cel |
3 developer-months 6 test-months |
All interested in generic NFS client robustness |
3 |
NFSv4 client-side delegation support
|
trondmy bfields |
1 developer-month 1 test-month |
All interested in NFSv4 client feature-completeness |
4 |
Client-side ACL support
|
ngallahe |
3 developer-months 1 test-month |
All interested in NFS ACL support, all versions |
5 |
Build suites of NFS client test software
|
Bull Open Source |
1 developer-month 6 test-months |
All interested in generic NFS client performance, scalability, and robustness |
6 | Support for NFSv4 named attributes |
trondmy bfields |
3 developer-month 1 test-month |
All interested in NFSv4 client feature-completeness |
7 |
Real-time NFS and RPC metrics
|
cel |
2 developer-months 2 test-months |
All interested in generic NFS client performance and scalability |
8 |
NFS O_DIRECT enhancements
|
cel |
2 developer-month 2 test-month |
All interested in O_DIRECT performance and scalability |
No. | Description | Lead developer | Resource estimate | Interested parties |
1 | Client support for crossing NFSv4 mount points (also NFSv3 nohide) | trondmy | 1 test-months | All interested in next two items |
2 |
Support for crossing mount points with different security flavors
|
trondmy |
1 developer-month 2 test-months |
All interested in support for servers exporting multiple security flavors |
3 |
Client support for migration and replication
|
trondmy |
3 developer-months 1 test-month |
All interested in support for servers that support migration and replication. NFSv4 "referrals" are useful for building AFS-style namespaces. |
4 |
NFSv4 Idmapper and gssd improvements
|
unassigned |
3 developer-months 1 test-month |
All interested in NFSv4 client configurability, performance, and scalability |
5 |
Miscellaneous RPCGSS items
|
bfields | 1 developer-month 4 test-months | All interested in NFS client security feature completeness |
6 |
Integrate keyring support into NFS client
|
trondmy / kwc |
1 developer-months 1 test-months |
All interested in NFS client ease-of-use (security) |
7 |
Support for SPKM3/lipkey (user and kernel)
|
kwc |
2 developer-months 2 test-month |
All interested in NFSv4 client feature-completeness, and in support for SPKM3 |
8 |
RPC client transport switch
|
cel |
4 developer-months 1 test-month |
All interested in IPv6, NFS/RDMA, and other advanced features |
9 |
Support thousands of concurrent mounts per client
|
trondmy |
1 developer-month 1 test-month |
All interested in generic NFS client performance and scalability |
10 | NFSv4 state recovery after network partition | trondmy | 1 test-month | All interested in NFSv4 stability |
No. | Description | Lead developer | Resource estimate | Interested parties |
1 | Support for IPv6 | Groupe Bull |
2 developer-months 3 test-months |
All interested in generic support for NFS over IPv6 |
2 |
Fine-grained SMP locking
|
trondmy |
6 developer-months 3 test-months |
All interested in generic NFS client performance and scalability |
3 |
Integrate cachefs for Linux NFS client
|
trondmy dhowells |
3 developer-months 1 test-month |
All interested in generic NFS client scalability |
4 |
Separate submount program for NFS
|
unassigned |
3 developer-months 2 test-months |
All interested in NFS client code maintainability |
5 |
READDIR caching improvements
|
trondmy cel |
3 developer-month 1 test-month |
All interested in NFSv4 client performance and scalability |
6 | XDR cleanups, v2/v3 | trondmy |
2 developer-month 1 test-month |
All interested in generic NFS client performance and scalability, and code maintainability |
7 | Support for NFS/RDMA | mts |
2 developer-months 1 test-month |
All interested in generic NFS client performance and scalability |
8 | Support for NFSv4.1 sessions | mts |
2 developer-months 1 test-month |
All interested in NFS/RDMA, or in improved DRC behavior |
9 | Support for large (1024KB) NFS READ and WRITE operations | cel |
1 developer-month 1 test-month |
All interested in generic NFS client performance and scalability |
10 | BSD credentials | trondmy |
2 developer-months 3 test-months |
All interested in NFS client ease-of-use (security) |
11 |
Dynamic execution study of RPC client and GSS
|
cel |
6 developer-months 3 test-months |
All interested in generic NFS client performance, scalability, and robustness |
12 |
2.6 VFS readahead algorithm analysis and improvements
|
cel linuxram |
2 developer-months 3 test-months |
All interested in NFS client performance, especially over WAN |
No. | Description | Lead developer | Resource estimate | Interested parties |
1 | Maintaining the Linux NFS FAQ | cel | 1 developer-month per year | |
2 | Performance characterization and regression testing | unassigned | 24 test-months per year | All interested in generic NFS client stability |
No. | Description | Lead developer | Resource estimate | Interested parties |
1 | Support for "llock" mount option | cel |
1 developer-month 1 test-month |
All interested in generic NFS client performance and scalability |
2 | Support for "noacl" mount option (disabling ACCESS operations) | cel |
1 developer-month 1 test-month |
All interested in generic NFS client performance and scalability |
3 | Coalesce synchronous writes (allow synchronous writes larger than a page) | cel |
1 developer-month 1 test-month |
All interested in generic NFS client performance and scalability |
4 | In-kernel client-side NSM | okir |
2 developer-month 1 test-month |
All interested in NFSv2/3 stability and ease of use |
5 | Improve behavior of NFS over UDP | trondmy |
1 developer-month 2 test-months |
All interested in NFSv2/3 client performance, scalability, and robustness |
6 | Deploy a bug tracking database for NFS developers | trondmy |
1 developer-month 1 test-months |
All interested in code maintenance |
7 |
Servicability enhancements
|
steved |
2 developer-month 2 test-months |
All interested in ease-of-use |
8 |
Multi-path I/O and high availability
|
unassigned |
3 developer-months 6 test-months |
All interested in NFS client availability |
9 |
Support NFS aio
|
cel |
2 developer-months 2 test-months |
All interested in using aio |
In this section we capture projects whose scope is broad enough that we don't yet have clearly specifiable tasks that can be laid out in a roadmap.
The Bull Open Source group has begun assembling a list of NFSv4 tests. Much of the Linux NFSv4 implementation shares code with the version 2 and 3 support, so these tests will exercise and improve all versions of the NFS code in many cases.
However, there are still some things missing.
The open source community has a tradition of managing testing requirements differently than more product-oriented development agencies. Naturally we must be sensitive to the traditions and attitudes of the community as we introduce a greater level of rigorousness to software testing.
In the following section, I refer to "customers" although this is an ill-defined term in the open source community. Customer support continues to be an issue not just for Linux distributors, but also for the open source community in general, and for commercial interests.
Linux NFS client customer support issues are changing in nature. As the Linux NFS client improves, there are many more customers who find that the NFS client "just works" when it is deployed in their environment. Basic implementation and interoperability issues have, for the most part, been resolved. On the other hand, the client is now stable enough to deploy in more sophisticated environments under considerably heavier workloads. Customer problem events are becoming fewer but each takes longer to resolve.
Here are the issues:
There are several new directions for NFS version 4. Generally, advanced development on Linux NFS is funded by specific parties, rather than provided via traditional open source mechanisms. It is difficult to integrate some of these features into the Linux NFS client long before they are available in other implementations.
NFS is being used more and more in cluster environments. There are a number of questions we have about how NFS will fit in with the increasing number of cluster file system solutions. First, what cluster semantics are desirable in NFS that it doesn't have? How can we improve on the traditional NFS client cache coherency model to meet the needs of clusters? How will pNFS fit in? What are the transport protocol implications for thousands of client nodes on a single LAN? What are the GRID's requirements -- security, WAN performance, etc? How well does NFS work on a large NUMA SMP client?
The networking world is certainly not standing still. Let's start considering some of these new transports and how we can integrate them into the NFS client. We also need to track user requirements for these new features and facilities.
There are several specific areas where we can improve the Linux NFS client for use with large-scale and clustered database applications. This effort is already ongoing, but includes:
Many of these items already appear above in our task list, but it is important to understand why they are there.
Last modified: Fri Mar 11 11:55:50 EDT 2005