Skip to end of metadata
Go to start of metadata

mdb: Open source implementation of nfs module

The current version of the code is available at http://cr.illumos.org/~webrev/marcel/il-3409-mdb-nfs/

The implementation of the open source nfs module for mdb is covered by Feature #3409. The aim is to replace the closed source nfs module we inherited from the OpenSolaris project in August 2010. The closed source nfs module is buggy, it does not allow us to change some NFS implementation internals without breaking its functionality, and it is closed (smile). The open source implementation tries to implement the same set of functionality as we can found in the closed source version. The list of significant fixes, changes and improvements made in the open source nfs module (when compared to the closed source nfs module) follows.

General fixes and improvements

  • Formatting of the output of all debugger commands was fixed (for example column widths) and polished.
  • All commands now have all options and usage properly documented (see ::help for a particular command).
  • All IPv6 addresses are printed properly using the IPv6 address format (for example in ::svc_mxprt or ::nlm_sysid debugger commands).

Fixes and improvements in the svc related commands and walkers

svc_pool debugger command displayed one mxprt twice

The closed source implementation of the ::svc_pool command printed the first master xprt twice when the -v option was used. This bug is fixed in the open source implementation.

Old closed source implementation:
New open source implementation:

Fixes and improvements in the rfs4 related commands and walkers

The rfs4_db_bkt walker now works

The rfs4_db_bkt walker produced some strange values. Now it works properly.

Old closed source implementation:
New open source implementation:

Fixes and improvements in the NFS server related commands and walkers

Fixes and improvements in the NLM related commands and walkers

Switched (L) and (R) in nlm_lockson output

The sysid(x) column in the ::nlm_lockson output had switched (L) and (R) marks.

Old closed source implementation:
New open source implementation:
hostname parameter in nlm_lockson works now

The hostname parameter in the ::nlm_lockson debugger command now works as documented.

Old closed source implementation:
New open source implementation:

Fixes and improvements in the NFSv4 idmap related commands and walkers

nfs4_idmap_info debugger command and nfs4_u2s, nfs4_s2u, nfs4_g2s, nfs4_s2g walkers are now global too

When the zone address is not passed to the debugger command or the walker the global zone is used.

Old closed source implementation:
New open source implementation:

Fixes and improvements in the NFS client related commands and walkers

Negative IO statistics for nfs_mntinfo debugger command

The debugger command sometimes printed negative numbers for IO statistics.

Old closed source implementation:
New open source implementation:
The nfs4_server_info debugger command changes
  1. Removed -v option. It looks like this option does nothing in the closed source implementation, so a decision has been made to not implement this option in the open source implementation.
  2. Added -c option. The closed source implementation of the nfs4_server_info debugger command is able to decode the client generated structure CLIDtoSend after issuing ::nfs_set -c, but there is no direct option for the nfs4_server_info debugger command to get the same result. The open source implementation have added -c option to be able directly instruct the nfs4_server_info debugger command to decode CLIDtoSend.

  3. N4S_INSERTED flag is properly displayed. The closed source implementation was not able to display this flag.
  4. CLIDtoSend verifier was printed with wrong byte order.
  5. CLIDtoSend verifier is now decoded too (with the -c option).
Old closed source implementation:
New open source implementation:
Leading slash is no longer printed by nfs4_fname and nfs4_svnode debugger commands

The closed source implementation of both nfs4_fname and nfs4_svnode debugger commands erroneously prints leading slash in the path name. Since the paths are relative to the mountpoint, the leading slash should not be there.

Old cosed source implementation
New open source implementation
Labels: