From: Chuck Fossen Date: Fri, 11 Dec 2015 15:02:44 +0000 (+0000) Subject: LU-7578 gnilnd: Return correct error on GNI_RC_ERROR_NOMEM X-Git-Tag: 2.7.90~14 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=919b8968d84d0d6ad57e2e6e5e1a8ccb02a1bd2c LU-7578 gnilnd: Return correct error on GNI_RC_ERROR_NOMEM 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 Change-Id: I117acbe7ed24447bb2cf6d36b7f4814eea05ac2d Reviewed-on: http://review.whamcloud.com/17666 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Dmitry Eremin Reviewed-by: James Simmons Reviewed-by: Oleg Drokin --- diff --git a/lnet/klnds/gnilnd/gnilnd_api_wrap.h b/lnet/klnds/gnilnd/gnilnd_api_wrap.h index 66214de..0a5a562 100644 --- a/lnet/klnds/gnilnd/gnilnd_api_wrap.h +++ b/lnet/klnds/gnilnd/gnilnd_api_wrap.h @@ -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(