ZC API: Allow CMK_BUFFER_UNREG buffers to be de-registered 32/5132/3
authorNitin Bhat <nbhat4@illinois.edu>
Fri, 26 Apr 2019 18:42:42 +0000 (13:42 -0500)
committerNitin Bhat <nbhat4@illinois.edu>
Tue, 7 May 2019 13:59:21 +0000 (08:59 -0500)
Change-Id: Ia183e53d752a2c21c7534b111101ee2b4721421d

src/arch/gni/machine-onesided.C
src/arch/ofi/machine-onesided.C
src/arch/verbs/machine-onesided.C

index 732680f12e30450fad3e67d41b4c2a08c644a3f9..90c19e86caa8dd5016c392fd2affaf77d3f1c454 100644 (file)
@@ -328,7 +328,7 @@ void deregisterDirectMem(gni_mem_handle_t mem_hndl, int pe) {
 
 // Method invoked to deregister memory handle
 void LrtsDeregisterMem(const void *ptr, void *info, int pe, unsigned short int mode){
-  if(mode == CMK_BUFFER_REG) {
+  if(mode != CMK_BUFFER_PREREG && mode != CMK_BUFFER_NOREG) {
     CmiGNIRzvRdmaPtr_t *destInfo = (CmiGNIRzvRdmaPtr_t *)info;
     deregisterDirectMem(destInfo->mem_hndl, pe);
   }
index ac6a6c93e58ba936d7fc310b2f7337513667fb5f..fb6a9495b63344d97c1775eff42e94f38db0e22a 100644 (file)
@@ -318,8 +318,8 @@ void LrtsDeregisterMem(const void *ptr, void *info, int pe, unsigned short int m
   CmiOfiRdmaPtr_t *rdmaSrc = (CmiOfiRdmaPtr_t *)info;
   int ret;
 
-  // Deregister the buffer
-  if(rdmaSrc->mr) {
+  if(mode != CMK_BUFFER_NOREG && rdmaSrc->mr) {
+    // Deregister the buffer
     ret = fi_close((struct fid *)rdmaSrc->mr);
     if(ret)
       CmiAbort("LrtsDeregisterMem: fi_close(mr) failed!\n");
index aee0e110e2bc4a95d8efab5e8ad236e36e6da076..2e14c856db1068a8d7c96775bb7ca9bcfecc3ac2 100644 (file)
@@ -193,7 +193,7 @@ void LrtsIssueRput(NcpyOperationInfo *ncpyOpInfo) {
 void LrtsDeregisterMem(const void *ptr, void *info, int pe, unsigned short int mode){
   CmiVerbsRdmaPtr_t *rdmadest = (CmiVerbsRdmaPtr_t *)info;
 
-  if(mode == CMK_BUFFER_REG) {
+  if(mode != CMK_BUFFER_PREREG && mode != CMK_BUFFER_NOREG) {
     if (ibv_dereg_mr(rdmadest->mr)) {
       CmiAbort("ibv_dereg_mr() failed at LrtsDeregisterMem\n");
     }