Whamcloud - gitweb
* PtlMDUnlink() can no longer return PTL_MD_INUSE, since it commits the MD
authoreeb <eeb>
Fri, 19 Dec 2003 13:58:10 +0000 (13:58 +0000)
committereeb <eeb>
Fri, 19 Dec 2003 13:58:10 +0000 (13:58 +0000)
commite4b80885b0606ab77782e28df6ef722f09caffae
tree204dcc5ee3d23bfe410432ef9026006bc3bf8a79
parent63f7ced2f41d8aa608a455adffc581d1882c2e3d
*  PtlMDUnlink() can no longer return PTL_MD_INUSE, since it commits the MD
   for destruction.  If no network I/O is current at the time, a
   PTL_EVENT_UNLINK event is created.

*  The 'unlinked_me' field of an event has been replaced by a simple flag
   'unlinked' that is set if the event signals the destruction of the MD.

*  Events have a new 'status' field.  This is PTL_OK on successful
   completion, and any other portals errno on completion with failure.
   CWARN() messages in these callbacks log abnormal completion.

*  All event callbacks changed to handle the UNLINK event, completion
   status and unlinked flag.

*  All abnormal completions changed to work with PltMDUnlink and the new
   callbacks.

*  Removed bd_complete from ptlrpc_bulk_desc and added bd_success.
   Communications have completed when bd_network_rw gets cleared.   If
   bd_success is set, then bd_nob_transferred tells you how much data
   was sent/received.

*  Changed MDS and OST bulk completion to deal with failed bulk transfers.
   The PtlBD server just LASSERTS things went OK, so we can be reminded to
   implement better error handling there too.

*  ptlrpc_wake_client_req() inline helper.

*  Changed the lib/NAL interface as follows....

   .  cb_callback() is optional and defaults to calling the event queue's
      callback if it is left NULL.

   .  cb_read(), cb_write(), cb_map(), cb_map_pages(), return PTL_OK on
      success and another portals errno on failure.

   .  cb_send(), cb_send_pages(), cb_recv(), cb_recv_pages() return PTL_OK
      if and only if they can commit to calling lib_finalize() when the
      relevent message completes (possibly with error).

   .  cb_send(), cb_send_pages(), cb_recv(), cb_recv_pages() may not modify
      the iovec/ptl_kiov_t they are passed, and must do I/O on the
      subsection of this scatter/gather buffer starting at 'offset' for
      'mlen' bytes.  This greatly simplifies portals lib level descriptor
      management at minimal expense to the NAL.

   .  portals lib now exports lib_extract_iov(), lib_extract_kiov() and the
      other iov helpers take an additional 'offset' parameter, to simplify
      offset buffer coding in the NAL.

   .  lib_parse() is void (i.e. returns no value).

   .  lib_finalize() takes an addition ptl_errno_t completion status.

   ...note that NALs other than qswnal and socknal need to have these
   changes implemented properly and tested.

*  Swapped some loose fprintf()s for CERROR()

*  Dropped PORTAL_SLAB_ALLOC(); portals just uses PORTAL_ALLOC() now.
   Since there are no slabs now, I also changed #ifdef PTL_USE_SLAB_CACHE
   to #ifndef PTL_USE_LIB_FREELIST

*  Changed lib_msg_alloc() so it is _never_ called with the statelock held,
   just like all the other allocators.

*  Changed dynamic MD allocation to size the MD by the number of fragments.

*  Dropped a bunch of dross, plus the iovs from lib_msg_t so they become
   tiny again.
lustre/ldlm/ldlm_lib.c