ChucksProjects
From Linux NFS
Revision as of 17:29, 15 October 2007 by Chucklever (Talk | contribs)
Stuff I'm playing with, thinking about, or watching admiringly...
Mount
Testing and documentation
- Add real unit testing
- Construct a set of specifications for mount behavior
- Rewrite nfs(5)
- Test "-o remount" -- handled by /usr/sbin/mount instead of /sbin/mount.nfs?
UI clean up
- Make error reporting more useful
- Some error messages are too specific ("RPC Error: RPC program not available" is meaningless to most users)
- Some error messages are too general ("mount.nfs: mount failed" doesn't explain how to rectify the problem)
- Complete internationalization
New features
- Implement support for IPv6
- Implement support for server failover options
- Add scalable mounting (more efficient use of network resources; mountd connection caching)
- Properly implement break-back retries
NFS support for IPv6 networking
- Get the delegation / NLM stuff working
- Rewrite the referral logic in user-space (DNS resolution can be needed to handle an NFSv4 referral)
- Review svcauth_unix stuff to remove open-coded IPv4 address dependencies
- Track where we are with user-space tools and libraries
- Existing NFS IPv6 code for the client
Alternate socket-based transport implementations
- Two sockets per rpc_clnt (one for sync, one for async requests)
- One socket per client CPU
- One socket per server, shared by mount points (that's probably an NFS client change, not a transport change)
- DMA-engine transport
- SCTP-based transport (server-side switch needed for that)
Rebuild the NFS server and client XDR layer from the ground up
- More complete type checking and error reporting
- Each function called with a simplified virtual API
- All functions re-entrant so we can remove the BKL
Eliminate BKL from NFS client
- Remove BKL dependency from attribute cache
- Remove BKL usage from XDR layer
- Remove BKL usage from RPC client and GSS
- Eliminate BKL in NFS client proper
From OmniOutliner
- Bruce found that the BKL is held while calling normal XDR encoding and decoding functions
- Why did I miss the existence BKL around XDR encoding?
- Generic xdr.c: look for anything caching an xdr_buf, especially during decode
- Still need an audit of NFSv4 XDR
- Copying state ids
- Migration - file handles can change
- Theoretically the client ID is in danger as well
- Trond has RCU'd lots of stuff shared with NFSv4 XDR
- and also the RPC auth cache
- Radix trees are now RCU -- so write path locking might be relaxed
NFS client build testing
- Builds kernel with "allmodconfig" and "allyesconfig"
- Automated - no user intervention once started
- Tests all patches in a series
- Later add more static analysis for each patch
- Need to add post-analysis tool that compares the build logs
- Need to eliminate as many spurious warnings generated by the tool chain as possible
Advanced file sync tool
- multi-purpose generic file system syncer - a file synchronization tool that runs on most Unix-flavored operating systems
- one-way or bidirectional data synchronization
- syncs file changes periodically or continuously
- supports disconnected operation (later playback of changes)
- can use advanced file system features to improve efficiency
- the basic idea is to use an inotify-like mechanism to make the detection of file and directory modification more efficient
Unifying storage management on Linux
- A easy-to-use graphical tool that can manage storage devices and pools, and file systems
- Includes a wizard (like Roxio or Toast) that can start different applications depending on what is to be accomplished
- Make it easy to create, manage, and back up very large data storage pools
- Make it easy to export and secure data
- Provide a framework for thinking about and documenting data management
Linux De-duplication appliance
- Provide high capacity near-line storage for inexpensive disk-based backup
- Based on content-addressable storage on top of RAID 6
- Looks like one or more very large OSD LUNs or a very large NFS server
NFS client performance tools
- Replace jiffies-based timestamps with ktime in the RPC client for more precise latency measurement
- Consider adding existing Python utilities to nfs-utils
- Update vmstat and iostat tools to provide statistics about NFS mount points
- Construct new tools that provide fine-grained data about NFS mount points