Do not call cond_resched() in spl_slab_reclaim()

Calling cond_resched() after each object is freed and then after each
slab is freed can cause slabs of objects to live for excessive periods
of time following reclamation. This interferes with the kernel's own
memory management when called from kswapd and can cause direct reclaim
to occur in response to memory pressure that should have been resolved.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
Stop maintaining list of complete slabs

The complete slab list serves no practical purpose, so lets remove it.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
Replace partial slab list with rbtree

This permits us to maintain a strict ordering of fullest to emptiest slabs
based on the slab reference count. This reduces internal fragmentation
in the slabs by ensuring that we do not allocate objects from slabs that
could potentially be freed.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>