Whamcloud - gitweb
LU-7578 gnilnd: Return correct error on GNI_RC_ERROR_NOMEM 66/17666/2
authorChuck Fossen <chuckf@cray.com>
Fri, 11 Dec 2015 15:02:44 +0000 (15:02 +0000)
committerOleg Drokin <oleg.drokin@intel.com>
Fri, 5 Feb 2016 14:57:14 +0000 (14:57 +0000)
gni_mem_register() can now return GNI_RC_ERROR_NOMEM.
The upper layers need GNI_RC_ERROR_RESOURCE returned so that the
registration will retry.
In kgnilnd_mem_register, convert GNI_RC_ERROR_NOMEM to
GNI_RC_ERROR_RESOURCE.

Signed-off-by: Chris Horn <hornc@cray.com>
Change-Id: I117acbe7ed24447bb2cf6d36b7f4814eea05ac2d
Reviewed-on: http://review.whamcloud.com/17666
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lnet/klnds/gnilnd/gnilnd_api_wrap.h

index 66214de..0a5a562 100644 (file)
@@ -1416,10 +1416,16 @@ static inline gni_return_t kgnilnd_mem_register(
                        dst_cq_hndl, flags, mem_hndl);
        }
 
+       /* gni_mem_register may return GNI_RC_ERROR_NOMEM under memory
+        * pressure but the upper layers only know about resource errors
+        */
+       if (rrc == GNI_RC_ERROR_NOMEM) {
+               rrc = GNI_RC_ERROR_RESOURCE;
+       }
+
        switch (rrc)  {
        case GNI_RC_SUCCESS:
        case GNI_RC_ERROR_RESOURCE:
-       case GNI_RC_ERROR_NOMEM:
                break;
        case GNI_RC_INVALID_PARAM:
                GNILND_API_SWBUG(