spin_lock_irqsave(&barn->lock, flags);
- if (barn->nr_empty) {
- sheaf = list_first_entry(&barn->sheaves_empty,
- struct slab_sheaf, barn_list);
- list_del(&sheaf->barn_list);
- barn->nr_empty--;
- } else if (barn->nr_full) {
+ if (barn->nr_full) {
sheaf = list_first_entry(&barn->sheaves_full, struct slab_sheaf,
barn_list);
list_del(&sheaf->barn_list);
barn->nr_full--;
+ } else if (barn->nr_empty) {
+ sheaf = list_first_entry(&barn->sheaves_empty,
+ struct slab_sheaf, barn_list);
+ list_del(&sheaf->barn_list);
+ barn->nr_empty--;
}
spin_unlock_irqrestore(&barn->lock, flags);