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