svn commit: r281451 - head/sys/vm

Scott Long scott4long at yahoo.com
Thu Apr 23 18:56:56 UTC 2015


> On Apr 23, 2015, at 6:19 AM, Scott Long <scott4long at yahoo.com> wrote:
> 
>> 
>> On Apr 12, 2015, at 12:21 AM, Dmitry Chagin <dchagin at FreeBSD.org> wrote:
>> 
>> Author: dchagin
>> Date: Sun Apr 12 06:21:58 2015
>> New Revision: 281451
>> URL: https://svnweb.freebsd.org/changeset/base/281451
>> 
>> Log:
>> Rework r281162. Indeed, the flexible array member is preferable here.
>> 
>> Suggested by:   Justin T. Gibbs
>> 
>> MFC after:	3 days
>> 
>> Modified:
>> head/sys/vm/uma_core.c
>> head/sys/vm/uma_int.h
> 
> There’s still something wrong with this.  I have a machine with 28 cores (56 with hyperthreading) and 256GB of RAM, and ever since you committed r281162, it panics early in boot with a failed assertion.  It looks like the first few members of a uma_slab_t are getting overwritten accidentally, and somehow the padding of the extra member in the uma_zone_t was previously protecting it.  I don’t know the exact cause yet, but I must ask that you revert to r281161 in HEAD and stable/10 until the problem is resolved.
> 

I think the problem is that the masterzone_k and masterzone_z objects that are statically allocated in uma_core.c no longer have space for the uz_cpu field, but uma_zalloc_arg() always assumes that it’s there.  Early in boot when the ‘kegs' and ‘zones’ zones are being initialized, there’s only 1 CPU so pre-allocating 1 uz_cpu element in the uma_zone is enough.  I can’t see any way around this without significantly changing how uma_zalloc_arg() treats per-cpu caches.  I think it’s best to revert this change.

Scott




More information about the svn-src-head mailing list