Whamcloud - gitweb
LU-3496 lprocfs: implement log2 using bitops 57/6757/2
authorAndrew Perepechko <andrew_perepechko@xyratex.com>
Mon, 24 Jun 2013 18:12:55 +0000 (22:12 +0400)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 26 Sep 2013 05:10:59 +0000 (05:10 +0000)
This patch implements log2 using fls.

Signed-off-by: Andrew Perepechko <andrew_perepechko@xyratex.com>
Reviewed-by: Alexander Boyko <Alexander_Boyko@xyratex.com>
Reviewed-by: alexander_zarochentsev@xyratex.com
Reviewed-by: Vitaly Fertman <Vitaly_Fertman@xyratex.com>
Xyratex-bug-id: MRP-999
Change-Id: Id19752761b4dd162b282bb8006072f607b8bf729
Reviewed-on: http://review.whamcloud.com/6757
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/obdclass/lprocfs_status.c

index 5dd607b..9d91157 100644 (file)
@@ -2343,12 +2343,12 @@ EXPORT_SYMBOL(lprocfs_oh_tally);
 
 void lprocfs_oh_tally_log2(struct obd_histogram *oh, unsigned int value)
 {
-        unsigned int val;
+       unsigned int val = 0;
 
-        for (val = 0; ((1 << val) < value) && (val <= OBD_HIST_MAX); val++)
-                ;
+       if (likely(value != 0))
+               val = min(fls(value - 1), OBD_HIST_MAX);
 
-        lprocfs_oh_tally(oh, val);
+       lprocfs_oh_tally(oh, val);
 }
 EXPORT_SYMBOL(lprocfs_oh_tally_log2);