On Sun, 3 Apr 2011, Theo de Raadt wrote:
> based on a conversation at the bar.
>
> POOL_DEBUG is expensive. But we really want it because it finds bugs
> before they hurt us. The solution to this is to make it simpler to
> turn off.
Is it expensive because it tests every pool entry? Could it be made
cheaper by only checking the adjacent (+/- 1) entries on get/put?
> + if (ph->ph_magic) {
> + for (ip = (int *)pi, i = sizeof(*pi)/sizeof(int);
Shouldn't this be (pool_debug && ph->ph_magic)? Otherwise it will trigger
checking for entries left in the pool from before sysctl is reset.
> - for (ip = (int *)pi, i = sizeof(*pi)/sizeof(int);
> - i < pp->pr_size / sizeof(int); i++)
> - ip[i] = PI_MAGIC;
> + if (ph->ph_magic) {
> + for (ip = (int *)pi, i = sizeof(*pi)/sizeof(int);
> + i < pp->pr_size / sizeof(int); i++)
> + ip[i] = ph->ph_magic;
ditto.