PNFS Todo List

From Linux NFS

(Difference between revisions)
Jump to: navigation, search
(pNFS Todo List)
 
(21 intermediate revisions not shown)
Line 1: Line 1:
== NFSv4.1 (sessions) Todo List ==
== NFSv4.1 (sessions) Todo List ==
==== Client ====
==== Client ====
 +
* [2009-07] keep read/write byte count stats.
 +
** bfields: the current (non-pnfs) statistics count bytes read and written, not number of read and write operations.  We should probably do the same in the pNFS case?  Adding them's easy enough (grep e.g. for NFSIOS_NORMALREADBYTES) but I wasn't sure where to put the nfs_add_stats(.,NFSIOS_PNFSREADBYTES,.) calls....  (Or whether that's exactly the right statistic.)
 +
* [2009-07] handle SEQ4_STATUS_CB_PATH_DOWN{_SESSION}
* [2009-02] mount version negotiation
* [2009-02] mount version negotiation
-
** Propagate error up to the mount system call (Andy)
 
** Update mount utils command to reissue the mount with a different version (SteveD)
** Update mount utils command to reissue the mount with a different version (SteveD)
* [2009-02] New backchannel implementation that handles multiple flavor authentication (Ricardo)
* [2009-02] New backchannel implementation that handles multiple flavor authentication (Ricardo)
Line 9: Line 11:
* [2009-02] Lock Sequencing
* [2009-02] Lock Sequencing
** With the advent of Sessions, the open sequencing should be reworked to avoid double sequencing.  No need to sequence in the operations if the session is already sequencing (Lower priority)
** With the advent of Sessions, the open sequencing should be reworked to avoid double sequencing.  No need to sequence in the operations if the session is already sequencing (Lower priority)
-
* [2008-08] Propose design for unified client/LD device cache. (Benny)
 
==== Server ====
==== Server ====
-
* Bug 172 -  EXCHANGE_ID does not reply on first request (Andy)
+
* [2009-07] laundromat should go over pending layout recalls and expire clients that show no progress for more than the lease period.
-
* [2009-02] Client should validate Backchannel attributes
+
* [2009-07] when the callback path is down and there is outstanding state we need to set SEQ4_STATUS_CB_PATH_DOWN in the sequence results (similar to nfsd4_renew())
-
** The client determines the resources used by the backchannel.  If the server ignores the client specification, and changes the values, the client shou8ld drop the mount to v4
+
* [2009-07] when the callback path is down we should deny LAYOUTGETs, probably with NFS4ERR_LAYOUTTRYLATER.
-
* [2009-02] Documentation
+
* [2009-02] when the last session to use a given tcp connection goes down, should we shut down the connection?
-
** What functionality is supported?  What will a user be able to do?
+
* Bruce wants a patch for the Documentation directory that explains which features we have implemented and which we have not.
 +
** He wants this done from a user's perspective - what would a fully functional NFSv4.1 sessions client see from the server?
 +
** Document the ramifications of the present implementation
 +
*** shortcuts we made.
 +
*** Document server owner implementation.
* [2008-10] Never return NFS4ERR_RESOURCE in nfs41/pnfs. Error code was deprecated.  Typically need to return NFS4ERR_REQ_TOO_BIG instead.
* [2008-10] Never return NFS4ERR_RESOURCE in nfs41/pnfs. Error code was deprecated.  Typically need to return NFS4ERR_REQ_TOO_BIG instead.
-
* [2008-04-10] Add an option to control nfsv4.1 on the server side.
 
-
** The motivation is disabling 4.1 on the server without having to rebuild the kernel.  Some use cases: a faulty 4.1 client, or one that's crashing the server, or just for easier debugging of the client (4.1 client mounting a 4.0 server).
 
== pNFS Todo List ==
== pNFS Todo List ==
 +
 +
* [2009-04] Replace usage of READMEM and COPYMEM in callback path (Mike)
 +
* [2009-02] Complete file layout server-to-server stateid distribution implementation. [[pNFS File-based Stateid Distribution Design]] (Dean)
* [2008-10] Properly define NFS4_DEV_NOTIFY_MAXENTRIES to handle anything that fits in the negotiated max. request size for the backchannel.
* [2008-10] Properly define NFS4_DEV_NOTIFY_MAXENTRIES to handle anything that fits in the negotiated max. request size for the backchannel.
 +
 +
* [2008-08] Propose design for unified client/LD device cache. (Benny)
* [2008-06-30] Separate pnfsd export and callback API out of export_operations. (Ricardo)
* [2008-06-30] Separate pnfsd export and callback API out of export_operations. (Ricardo)
Line 32: Line 40:
[http://www.bhalevy.com/pnfs/pnfs-page-sync-model.pdf proposed model]
[http://www.bhalevy.com/pnfs/pnfs-page-sync-model.pdf proposed model]
-
* Bug 173 -  Need to retry EXCHANGE_ID and CREATE_SESSION to Data Server
+
==== kABI ====
 +
* Identify new exported functions (Ricardo)
 +
* Identify updated data structures (Ricardo)
 +
* How shall the user specify to use pNFS for a mount?
 +
** Today it's based on the previously loaded pNFS module
 +
** Should this be a mount option?  Should it always try pNFS if the server supports it?
 +
 
 +
==== pNFS server status ====
 +
 
 +
See [[pNFS server projects]]
== Done ==
== Done ==
 +
 +
======  [0/10] nfsd41 server backchannel for 2.6.31 Apr/30/2009  ======
 +
* Port to new callback infrastructure that uses asynchronous RPC tasks
 +
** Ricardo - tentatively
 +
* [03/10] nfsd41: sunrpc: Added rpc server-side backchannel handling
 +
** Alexandros
 +
* [04/10] nfsd41: Remember the auth flavor to use for callbacks
 +
** Ricardo
 +
* [05/10] nfsd41: callback infrastructure
 +
** Andy
 +
* [09/10] nfsd41: cb_sequence callback
 +
** Benny
 +
 +
** Propagate error up to the mount system call (Andy/Benny)
 +
* [2008-04] Add an option to control nfsv4.1 on the server side.
 +
** The motivation is disabling 4.1 on the server without having to rebuild the kernel.  Some use cases: a faulty 4.1 client, or one that's crashing the server, or just for easier debugging of the client (4.1 client mounting a 4.0 server).
 +
 +
====== Ann Arbor 11/08 Review Patches ======
 +
The following still need to be addressed:
 +
* [11/51] nfsd41-sessions-basic-data-types.patch we'll need at least one per-session max. variable maybe a global max.
 +
** nfsd_compoundargs has a max size for the preallocated ops array. need to define that in a header file use for both nfs4 and nfs41. (preallocated per nfsd thread)
 +
** review storing negotiated back channel session parameters
 +
* [23] nfsd41-xdr-stubs.patch
 +
** review 11-13: add comment about why we don't need nfsd4_enc_ops per minorversion like we do for the decoding vector.
 +
* 0030-nfsd41-destroy_session-operation.patch
 +
** > +    shutdown_callback_client(ses->se_client);
 +
** review 11-12: we need ref. counting for that backchannel to support trunking. 
 +
** clp->cl_callback.cb_client is shared?
 +
* Write a commit message for [PATCH 36/46] nfsd41: sunrpc: Added rpc server-side backchannel handling
 +
** FIXME: bhalevy: write up commit message
 +
* Need to discuss multiple per client session fore and back channel support.
 +
* Ensure the server passes all of the pynfs4.1 testserver.py tests.
 +
** A bit of work here.
 +
* Ensure the server passes all of the pynfs4.0 testserver.py tests that the unpatched server pases over a v4.0 mount when CONFIG_NFSD_V4_1 is configured, and when it is not. 
 +
** A bit of work here.
 +
 +
* [2009-05]  Bug 173 -  Need to retry EXCHANGE_ID and CREATE_SESSION to Data Server
 +
* [2009-04]  Bug 176 -  Need to implement slot table for nfsd backchannel (Ricardo)
 +
* [2009-02] Client should validate Backchannel attributes (Andy+Benny)
 +
** The client determines the resources used by the backchannel.  If the server ignores the client specification, and changes the values, the client shou8ld drop the mount to v4
 +
 +
* Bug 172 -  EXCHANGE_ID does not reply on first request (Andy)
* [2008-08] Revamp reply cache for nfsv4 and nfsv4.1. (Andy)
* [2008-08] Revamp reply cache for nfsv4 and nfsv4.1. (Andy)

Latest revision as of 16:19, 25 July 2009

Contents

NFSv4.1 (sessions) Todo List

Client

  • [2009-07] keep read/write byte count stats.
    • bfields: the current (non-pnfs) statistics count bytes read and written, not number of read and write operations. We should probably do the same in the pNFS case? Adding them's easy enough (grep e.g. for NFSIOS_NORMALREADBYTES) but I wasn't sure where to put the nfs_add_stats(.,NFSIOS_PNFSREADBYTES,.) calls.... (Or whether that's exactly the right statistic.)
  • [2009-07] handle SEQ4_STATUS_CB_PATH_DOWN{_SESSION}
  • [2009-02] mount version negotiation
    • Update mount utils command to reissue the mount with a different version (SteveD)
  • [2009-02] New backchannel implementation that handles multiple flavor authentication (Ricardo)
  • [2009-02] Documentation
    • What functionality is supported? What will a user be able to do?
  • [2009-02] Lock Sequencing
    • With the advent of Sessions, the open sequencing should be reworked to avoid double sequencing. No need to sequence in the operations if the session is already sequencing (Lower priority)

Server

  • [2009-07] laundromat should go over pending layout recalls and expire clients that show no progress for more than the lease period.
  • [2009-07] when the callback path is down and there is outstanding state we need to set SEQ4_STATUS_CB_PATH_DOWN in the sequence results (similar to nfsd4_renew())
  • [2009-07] when the callback path is down we should deny LAYOUTGETs, probably with NFS4ERR_LAYOUTTRYLATER.
  • [2009-02] when the last session to use a given tcp connection goes down, should we shut down the connection?
  • Bruce wants a patch for the Documentation directory that explains which features we have implemented and which we have not.
    • He wants this done from a user's perspective - what would a fully functional NFSv4.1 sessions client see from the server?
    • Document the ramifications of the present implementation
      • shortcuts we made.
      • Document server owner implementation.
  • [2008-10] Never return NFS4ERR_RESOURCE in nfs41/pnfs. Error code was deprecated. Typically need to return NFS4ERR_REQ_TOO_BIG instead.

pNFS Todo List

  • [2008-10] Properly define NFS4_DEV_NOTIFY_MAXENTRIES to handle anything that fits in the negotiated max. request size for the backchannel.
  • [2008-08] Propose design for unified client/LD device cache. (Benny)
  • [2008-06-30] Separate pnfsd export and callback API out of export_operations. (Ricardo)
  • [2008-06-30] Clean up pnfsd callback vector registration model. Provide for orderly nfsd shutdown to allow the filesystem to recall layouts upon shutdown.
  • [2008-04-02] Implement pnfs-aware page sync state model.

proposed model

kABI

  • Identify new exported functions (Ricardo)
  • Identify updated data structures (Ricardo)
  • How shall the user specify to use pNFS for a mount?
    • Today it's based on the previously loaded pNFS module
    • Should this be a mount option? Should it always try pNFS if the server supports it?

pNFS server status

See pNFS server projects

Done

[0/10] nfsd41 server backchannel for 2.6.31 Apr/30/2009
  • Port to new callback infrastructure that uses asynchronous RPC tasks
    • Ricardo - tentatively
  • [03/10] nfsd41: sunrpc: Added rpc server-side backchannel handling
    • Alexandros
  • [04/10] nfsd41: Remember the auth flavor to use for callbacks
    • Ricardo
  • [05/10] nfsd41: callback infrastructure
    • Andy
  • [09/10] nfsd41: cb_sequence callback
    • Benny
    • Propagate error up to the mount system call (Andy/Benny)
  • [2008-04] Add an option to control nfsv4.1 on the server side.
    • The motivation is disabling 4.1 on the server without having to rebuild the kernel. Some use cases: a faulty 4.1 client, or one that's crashing the server, or just for easier debugging of the client (4.1 client mounting a 4.0 server).
Ann Arbor 11/08 Review Patches

The following still need to be addressed:

  • [11/51] nfsd41-sessions-basic-data-types.patch we'll need at least one per-session max. variable maybe a global max.
    • nfsd_compoundargs has a max size for the preallocated ops array. need to define that in a header file use for both nfs4 and nfs41. (preallocated per nfsd thread)
    • review storing negotiated back channel session parameters
  • [23] nfsd41-xdr-stubs.patch
    • review 11-13: add comment about why we don't need nfsd4_enc_ops per minorversion like we do for the decoding vector.
  • 0030-nfsd41-destroy_session-operation.patch
    • > + shutdown_callback_client(ses->se_client);
    • review 11-12: we need ref. counting for that backchannel to support trunking.
    • clp->cl_callback.cb_client is shared?
  • Write a commit message for [PATCH 36/46] nfsd41: sunrpc: Added rpc server-side backchannel handling
    • FIXME: bhalevy: write up commit message
  • Need to discuss multiple per client session fore and back channel support.
  • Ensure the server passes all of the pynfs4.1 testserver.py tests.
    • A bit of work here.
  • Ensure the server passes all of the pynfs4.0 testserver.py tests that the unpatched server pases over a v4.0 mount when CONFIG_NFSD_V4_1 is configured, and when it is not.
    • A bit of work here.
  • [2009-05] Bug 173 - Need to retry EXCHANGE_ID and CREATE_SESSION to Data Server
  • [2009-04] Bug 176 - Need to implement slot table for nfsd backchannel (Ricardo)
  • [2009-02] Client should validate Backchannel attributes (Andy+Benny)
    • The client determines the resources used by the backchannel. If the server ignores the client specification, and changes the values, the client shou8ld drop the mount to v4
  • Bug 172 - EXCHANGE_ID does not reply on first request (Andy)
  • [2008-08] Revamp reply cache for nfsv4 and nfsv4.1. (Andy)
  • [2008-08] Trond verbally NACKed rpc_call_validate_args, suggest looking into using existing rpc_call_prepare infrastructure instead. (Andy)
  • [2008-06-30] Change fs/nfsd/nfs4xdr.c decoding/encoding to table based (bhalevy)
  • [2008-04-07] Prepare and send nfs41 patches for review. (bhalevy)
    • Depends on support for concurrent 4.0 and 4.1 mounts.
  • [2008-04-07] Add an option for nfsv4.1 to the nfs mount program.
    • "{nfs,}vers=41" seems to be the most appropriate. See nfs_mount_option_tokens in fs/nfs/super.c. Note that kernel nfs root (in fs/nfs/nfsroot.c does not current (2.6.25-rc8) support root over nfsv4 only "nfsvers=[23]".
  • [2008-04-07] Support concurrent nfsv4.0 and 4.1.
    • Get rid of global nfs4_procedures and move the pointer to struct nfs_client. (bhalevy)
    • nfs_version4 should not be global. We apparently need to either:
      • Split nfs_version and nfs_program to nfs_{version,program}4 and nfs_{version,program}41, make them static in fs/nfs/client.c and use either based on minorversion, or
      • teach rpc code, e.g. rpc_bind_new_program about minor version (and represent it in struct rpc_version). (bhalevy)
    • Manage callback threads for 4.0 and 4.1
      • Can either keep a separate use count, or
      • bring them up and down together. (rlabiaga)
  • Agree on LD API changes for block layout (Fred and Dean) then merge generic pnfs patch (fred-pnfs) into pnfs branch. (bhalevy)
  • [2008-04-02] Implement layout stateid as per draft-21+ (andros)
Personal tools