Zach Brown
authored
Use kmalloc() instead of slab to allocate the MD and MSG portal descriptors. On x86_64 the MD and MSG structs got quite large, into the 2k range, though pages are still 4k there. This tricked slab into trying to back their slabs with multi-page allocations. These allocations failed under high load which lead to LBUG()s and timeouts. While we're in here, properly initialize the in_use counts and stop using sleeping allocations while holding the state lock.