Making shrinker_sem an rwsem allows tasks in shrink_slab to be preempted or cond_resched'ed without slab reclaim grinding to a halt.