HomeFreeBSD

Handle a special case when a slab can fit only one allocation,

Description

Handle a special case when a slab can fit only one allocation,
and zone has a large alignment. With alignment taken into
account uk_rsize will be greater than space in a slab. However,
since we have only one item per slab, it is always naturally
aligned.

Code that will panic before this change with 4k page:

z = uma_zcreate("test", 3984, NULL, NULL, NULL, NULL, 31, 0);
uma_zalloc(z, M_WAITOK);

A practical scenario to hit the panic is a machine with 56 CPUs
and 2 NUMA domains, which yields in zone size of 3984.

PR: 227116
MFC after: 2 weeks

Details

Provenance
glebiusAuthored on
Parents
rS331870: MFC r330292: Update QLogic ISP 24xx/25xx chips firmware to 8.07.00.
Branches
Unknown
Tags
Unknown