return 1;
assert(td->trim_entries);
- ipo = flist_entry(td->trim_list.next, struct io_piece, trim_list);
+ ipo = flist_first_entry(&td->trim_list, struct io_piece, trim_list);
remove_trim_entry(td, ipo);
io_u->offset = ipo->offset;
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