Whamcloud - gitweb
LU-6163 kernel: use do_div64() for 64 bit divides
[fs/lustre-release.git] / lnet / lnet / net_fault.c
index 661cc5d..b5c69f2 100644 (file)
@@ -334,9 +334,11 @@ drop_rule_match(struct lnet_drop_rule *rule, lnet_nid_t src,
                }
 
        } else { /* rate based drop */
-               drop = rule->dr_stat.fs_count++ == rule->dr_drop_at;
+               __u64 count;
 
-               if (rule->dr_stat.fs_count % attr->u.drop.da_rate == 0) {
+               drop = rule->dr_stat.fs_count++ == rule->dr_drop_at;
+               count = rule->dr_stat.fs_count;
+               if (do_div(count, attr->u.drop.da_rate) == 0) {
                        rule->dr_drop_at = rule->dr_stat.fs_count +
                                           cfs_rand() % attr->u.drop.da_rate;
                        CDEBUG(D_NET, "Drop Rule %s->%s: next drop: %lu\n",
@@ -502,9 +504,12 @@ delay_rule_match(struct lnet_delay_rule *rule, lnet_nid_t src,
                }
 
        } else { /* rate based delay */
+               __u64 count;
+
                delay = rule->dl_stat.fs_count++ == rule->dl_delay_at;
                /* generate the next random rate sequence */
-               if (rule->dl_stat.fs_count % attr->u.delay.la_rate == 0) {
+               count = rule->dl_stat.fs_count;
+               if (do_div(count, attr->u.delay.la_rate) == 0) {
                        rule->dl_delay_at = rule->dl_stat.fs_count +
                                            cfs_rand() % attr->u.delay.la_rate;
                        CDEBUG(D_NET, "Delay Rule %s->%s: next delay: %lu\n",