View | Details | Raw Unified | Return to bug 227116 | Differences between
and this patch

Collapse All | Expand All

(-)uma_core.c (-3 / +12 lines)
Lines 1290-1296 keg_small_init(uma_keg_t keg) Link Here
1290
	else 
1290
	else 
1291
		shsize = sizeof(struct uma_slab);
1291
		shsize = sizeof(struct uma_slab);
1292
1292
1293
	keg->uk_ipers = (slabsize - shsize) / rsize;
1293
	if (rsize > slabsize - shsize) {
1294
		/* Handle special case when we have 1 item per slab, so
1295
		 * alignment requirement can be relaxed. */
1296
		KASSERT(keg->uk_size <= slabsize - shsize,
1297
		    ("%s: size %u greater than slab", __func__, keg->uk_size));
1298
		keg->uk_ipers = 1;
1299
	} else
1300
		keg->uk_ipers = (slabsize - shsize) / rsize;
1294
	KASSERT(keg->uk_ipers > 0 && keg->uk_ipers <= SLAB_SETSIZE,
1301
	KASSERT(keg->uk_ipers > 0 && keg->uk_ipers <= SLAB_SETSIZE,
1295
	    ("%s: keg->uk_ipers %u", __func__, keg->uk_ipers));
1302
	    ("%s: keg->uk_ipers %u", __func__, keg->uk_ipers));
1296
1303
Lines 1473-1479 keg_ctor(void *mem, int size, void *udata, int fla Link Here
1473
	if (keg->uk_flags & UMA_ZONE_CACHESPREAD) {
1480
	if (keg->uk_flags & UMA_ZONE_CACHESPREAD) {
1474
		keg_cachespread_init(keg);
1481
		keg_cachespread_init(keg);
1475
	} else {
1482
	} else {
1476
		if (keg->uk_size > (UMA_SLAB_SIZE - sizeof(struct uma_slab)))
1483
		if (keg->uk_size > UMA_SLAB_SPACE)
1477
			keg_large_init(keg);
1484
			keg_large_init(keg);
1478
		else
1485
		else
1479
			keg_small_init(keg);
1486
			keg_small_init(keg);
Lines 1820-1828 uma_startup_count(int vm_zones) Link Here
1820
#endif
1827
#endif
1821
1828
1822
	/* Memory for the rest of startup zones, UMA and VM, ... */
1829
	/* Memory for the rest of startup zones, UMA and VM, ... */
1823
	if (zsize > UMA_SLAB_SIZE)
1830
	if (zsize > UMA_SLAB_SPACE)
1824
		pages += (zones + vm_zones) *
1831
		pages += (zones + vm_zones) *
1825
		    howmany(roundup2(zsize, UMA_BOOT_ALIGN), UMA_SLAB_SIZE);
1832
		    howmany(roundup2(zsize, UMA_BOOT_ALIGN), UMA_SLAB_SIZE);
1833
	else if (roundup2(zsize, UMA_BOOT_ALIGN) > UMA_SLAB_SPACE)
1834
		pages += zones;
1826
	else
1835
	else
1827
		pages += howmany(zones,
1836
		pages += howmany(zones,
1828
		    UMA_SLAB_SPACE / roundup2(zsize, UMA_BOOT_ALIGN));
1837
		    UMA_SLAB_SPACE / roundup2(zsize, UMA_BOOT_ALIGN));

Return to bug 227116