Whamcloud - gitweb
LU-6636 libcfs: minor fix in cfs_hash_for_each_relax() 27/14927/2
authorNiu Yawei <yawei.niu@intel.com>
Mon, 25 May 2015 11:19:56 +0000 (07:19 -0400)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 10 Jun 2015 03:00:05 +0000 (03:00 +0000)
cfs_hash_for_each_relax() should break iteration when callback
returns non-zero value.

Signed-off-by: Niu Yawei <yawei.niu@intel.com>
Change-Id: I92d35be4b11931cae252646ab2d1f8e5599037f1
Reviewed-on: http://review.whamcloud.com/14927
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Bobi Jam <bobijam@hotmail.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Liang Zhen <liang.zhen@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
libcfs/libcfs/hash.c

index 43dc673..f2a7ca5 100644 (file)
@@ -1648,8 +1648,12 @@ cfs_hash_for_each_relax(struct cfs_hash *hs, cfs_hash_for_each_cb_t func,
                                 if (rc) /* callback wants to break iteration */
                                         break;
                         }
                                 if (rc) /* callback wants to break iteration */
                                         break;
                         }
+                       if (rc) /* callback wants to break iteration */
+                               break;
                 }
                 cfs_hash_bd_unlock(hs, &bd, 0);
                 }
                 cfs_hash_bd_unlock(hs, &bd, 0);
+               if (rc) /* callback wants to break iteration */
+                       break;
         }
         cfs_hash_unlock(hs, 0);
 
         }
         cfs_hash_unlock(hs, 0);