diff --git a/drivers/fbd/action.c b/drivers/fbd/action.c index a4b985620..624df263d 100644 --- a/drivers/fbd/action.c +++ b/drivers/fbd/action.c @@ -49,14 +49,14 @@ static size_t get_range(struct fbd_rule *rule, u64_t pos, size_t *size, to_eof = cmp64(rule->start, rule->end) >= 0; if (cmp64(pos, rule->start) > 0) { - if (skip != NULL) *skip = sub64(pos, rule->start); + if (skip != NULL) *skip = pos - rule->start; off = 0; } else { if (skip != NULL) *skip = ((u64_t)(0)); - delta = sub64(rule->start, pos); + delta = rule->start - pos; assert(ex64hi(delta) == 0); @@ -66,7 +66,7 @@ static size_t get_range(struct fbd_rule *rule, u64_t pos, size_t *size, if (!to_eof) { assert(cmp64(pos, rule->end) < 0); - delta = sub64(rule->end, pos); + delta = rule->end - pos; if (cmp64u(delta, *size) < 0) *size = ex64lo(delta); @@ -186,16 +186,16 @@ static void action_pre_misdir(struct fbd_rule *rule, iovec_t *UNUSED(iov), * here, because we have no idea about the actual disk size, and the * resulting address must of course be valid.. */ - range = div64u(add64u(sub64(rule->params.misdir.end, - rule->params.misdir.start), 1), rule->params.misdir.align); - + range = ((rule->params.misdir.end - rule->params.misdir.start) + 1) + / rule->params.misdir.align; + if (range > 0) choice = get_rand(range - 1); else choice = 0; - *pos = add64(rule->params.misdir.start, - mul64u(choice, rule->params.misdir.align)); + *pos = rule->params.misdir.start + + (u64_t)(choice * rule->params.misdir.align); } /*===========================================================================*