Fix IPv6 check on FreeBSD by including netinet/in.h
[fio.git] / trim.c
diff --git a/trim.c b/trim.c
index 3da1e749206dc02aaaf633ee25562f3b08c6ee59..de792dc46fd499beed43baffcc9b68184b04cf13 100644 (file)
--- a/trim.c
+++ b/trim.c
@@ -70,15 +70,20 @@ int get_next_trim(struct thread_data *td, struct io_u *io_u)
 int io_u_should_trim(struct thread_data *td, struct io_u *io_u)
 {
        unsigned long long val;
-       long r;
+       unsigned long r;
 
        if (!td->o.trim_percentage)
                return 0;
 
-       r = os_random_long(&td->trim_state);
-       val = (OS_RAND_MAX / 100ULL);
-       val *= (unsigned long long) td->o.trim_percentage;
+       if (td->o.use_os_rand) {
+               r = os_random_long(&td->trim_state);
+               val = (OS_RAND_MAX / 100ULL);
+       } else {
+               r = __rand(&td->__trim_state);
+               val = (FRAND_MAX / 100ULL);
+       }
 
+       val *= (unsigned long long) td->o.trim_percentage;
        return r <= val;
 }
 #endif