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

Collapse All | Expand All

(-)b/sys/geom/raid/g_raid.c (-2 / +16 lines)
Lines 2478-2487 g_raid_shutdown_post_sync(void *arg, int howto) Link Here
2478
	g_topology_unlock();
2478
	g_topology_unlock();
2479
}
2479
}
2480
2480
2481
static int  uma_test_zone_item_size = 129024;
2482
SYSCTL_UINT(_kern_geom_raid, OID_AUTO, uma_test_zone_item_size, CTLFLAG_RWTUN,
2483
    &uma_test_zone_item_size, 0, "Item size for uma test zone");
2484
2481
static void
2485
static void
2482
g_raid_init(struct g_class *mp)
2486
g_raid_init(struct g_class *mp)
2483
{
2487
{
2488
	uma_zone_t uma_test_zone;
2489
	void *p;
2490
	static int i;
2491
2492
	uma_test_zone = uma_zcreate("uma_test", uma_test_zone_item_size, NULL, NULL,
2493
	    NULL, NULL, 0, UMA_ZONE_NOFREE);
2484
2494
2495
	for (i = 0; i <= uma_test_zone_item_size; i++) {
2496
		p = uma_zalloc(uma_test_zone, M_WAITOK);
2497
		memset(p, 0x10, i);
2498
		G_RAID_DEBUG(1, "Freeing item after filling %d bytes.", i);
2499
		uma_zfree(uma_test_zone, p);
2500
	}
2485
	g_raid_post_sync = EVENTHANDLER_REGISTER(shutdown_post_sync,
2501
	g_raid_post_sync = EVENTHANDLER_REGISTER(shutdown_post_sync,
2486
	    g_raid_shutdown_post_sync, mp, SHUTDOWN_PRI_FIRST);
2502
	    g_raid_shutdown_post_sync, mp, SHUTDOWN_PRI_FIRST);
2487
	if (g_raid_post_sync == NULL)
2503
	if (g_raid_post_sync == NULL)
2488
- 
2489
panic without touching the item first
2504
panic without touching the item first
2490
   (kgdb) where
2505
   (kgdb) where
2491
   #0  __curthread () at ./machine/pcpu.h:222
2506
   #0  __curthread () at ./machine/pcpu.h:222
2492
   #1  doadump (textdump=1) at /usr/src/sys/kern/kern_shutdown.c:298
2507
   #1  doadump (textdump=1) at /usr/src/sys/kern/kern_shutdown.c:298
2493
   #2  0xffffffff80555465 in kern_reboot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:366
2508
   #2  0xffffffff80555465 in kern_reboot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:366
2494
   #3  0xffffffff80555a40 in vpanic (fmt=<optimized out>, ap=0xfffffe0113d69980) at /usr/src/sys/kern/kern_shutdown.c:759
2509
   #3  0xffffffff80555a40 in vpanic (fmt=<optimized out>, ap=0xfffffe0113d69980) at /usr/src/sys/kern/kern_shutdown.c:759
2495
   #4  0xffffffff80555876 in kassert_panic (fmt=0xffffffff808c521f "Assertion %s failed at %s:%d") at /usr/src/sys/kern/kern_shutdown.c:649
2510
   #4  0xffffffff80555876 in kassert_panic (fmt=0xffffffff808c521f "Assertion %s failed at %s:%d") at /usr/src/sys/kern/kern_shutdown.c:649
2496
   #5  0xffffffff807dd333 in keg_fetch_slab (keg=0xfffff80005b52480, zone=0xfffff80005b53700, flags=2) at /usr/src/sys/vm/uma_core.c:2343
2511
   #5  0xffffffff807dd333 in keg_fetch_slab (keg=0xfffff80005b52480, zone=0xfffff80005b53700, flags=2) at /usr/src/sys/vm/uma_core.c:2343
2497
   #6  0xffffffff807dc9ae in zone_fetch_slab (zone=0xfffff80005b53700, keg=0xfffff80005b52480, flags=2) at /usr/src/sys/vm/uma_core.c:2368
2512
   #6  0xffffffff807dc9ae in zone_fetch_slab (zone=0xfffff80005b53700, keg=0xfffff80005b52480, flags=2) at /usr/src/sys/vm/uma_core.c:2368
2498
   #7  0xffffffff807dca40 in zone_import (zone=0xfffff80005b53700, bucket=0xfffff800d7eae9f8, max=1, flags=2) at /usr/src/sys/vm/uma_core.c:2494
2513
   #7  0xffffffff807dca40 in zone_import (zone=0xfffff80005b53700, bucket=0xfffff800d7eae9f8, max=1, flags=2) at /usr/src/sys/vm/uma_core.c:2494
2499
   #8  0xffffffff807d9341 in zone_alloc_bucket (zone=0xfffff80005b53700, udata=0x0, flags=2) at /usr/src/sys/vm/uma_core.c:2524
2514
   #8  0xffffffff807d9341 in zone_alloc_bucket (zone=0xfffff80005b53700, udata=0x0, flags=2) at /usr/src/sys/vm/uma_core.c:2524
2500
   #9  uma_zalloc_arg (zone=0xfffff80005b53700, udata=0x0, flags=<optimized out>) at /usr/src/sys/vm/uma_core.c:2250
2515
   #9  uma_zalloc_arg (zone=0xfffff80005b53700, udata=0x0, flags=<optimized out>) at /usr/src/sys/vm/uma_core.c:2250
2501
   #10 0xffffffff8182329f in uma_zalloc (flags=2, zone=<optimized out>) at /usr/src/sys/vm/uma.h:336
2516
   #10 0xffffffff8182329f in uma_zalloc (flags=2, zone=<optimized out>) at /usr/src/sys/vm/uma.h:336
2502
   #11 g_raid_init (mp=0xffffffff81856838 <g_raid_class>) at /usr/src/sys/modules/geom/geom_raid/../../../geom/raid/g_raid.c:2496
2517
   #11 g_raid_init (mp=0xffffffff81856838 <g_raid_class>) at /usr/src/sys/modules/geom/geom_raid/../../../geom/raid/g_raid.c:2496
2503
   #12 0xffffffff804d1125 in g_load_class (arg=<optimized out>, flag=<optimized out>) at /usr/src/sys/geom/geom_subr.c:124
2518
   #12 0xffffffff804d1125 in g_load_class (arg=<optimized out>, flag=<optimized out>) at /usr/src/sys/geom/geom_subr.c:124
2504
   #13 0xffffffff804cd7c7 in one_event () at /usr/src/sys/geom/geom_event.c:264
2519
   #13 0xffffffff804cd7c7 in one_event () at /usr/src/sys/geom/geom_event.c:264
2505
   #14 g_run_events () at /usr/src/sys/geom/geom_event.c:286
2520
   #14 g_run_events () at /usr/src/sys/geom/geom_event.c:286
2506
   #15 0xffffffff80517e64 in fork_exit (callout=0xffffffff804cfa60 <g_event_procbody>, arg=0x0, frame=0xfffffe0113d69c00) at /usr/src/sys/kern/kern_fork.c:1040
2521
   #15 0xffffffff80517e64 in fork_exit (callout=0xffffffff804cfa60 <g_event_procbody>, arg=0x0, frame=0xfffffe0113d69c00) at /usr/src/sys/kern/kern_fork.c:1040
2507
   #16 <signal handler called>
2522
   #16 <signal handler called>
2508
   (kgdb) f 12
2523
   (kgdb) f 12
2509
   #12 0xffffffff804d1125 in g_load_class (arg=<optimized out>, flag=<optimized out>) at /usr/src/sys/geom/geom_subr.c:124
2524
   #12 0xffffffff804d1125 in g_load_class (arg=<optimized out>, flag=<optimized out>) at /usr/src/sys/geom/geom_subr.c:124
2510
   warning: Source file is more recent than executable.
2525
   warning: Source file is more recent than executable.
2511
   124                     mp->init(mp);
2526
   124                     mp->init(mp);
2512
   (kgdb) f 5
2527
   (kgdb) f 5
2513
   #5  0xffffffff807dd333 in keg_fetch_slab (keg=0xfffff80005b52480, zone=0xfffff80005b53700, flags=2) at /usr/src/sys/vm/uma_core.c:2343
2528
   #5  0xffffffff807dd333 in keg_fetch_slab (keg=0xfffff80005b52480, zone=0xfffff80005b53700, flags=2) at /usr/src/sys/vm/uma_core.c:2343
2514
   warning: Source file is more recent than executable.
2529
   warning: Source file is more recent than executable.
2515
   2343                            MPASS(slab->us_keg == keg);
2530
   2343                            MPASS(slab->us_keg == keg);
2516
   (kgdb) p slab->us_keg
2531
   (kgdb) p slab->us_keg
2517
   $1 = (uma_keg_t) 0xdeadc0dedeadc0de
2532
   $1 = (uma_keg_t) 0xdeadc0dedeadc0de
2518
   (kgdb) f 9
2533
   (kgdb) f 9
2519
   #9  uma_zalloc_arg (zone=0xfffff80005b53700, udata=0x0, flags=<optimized out>) at /usr/src/sys/vm/uma_core.c:2250
2534
   #9  uma_zalloc_arg (zone=0xfffff80005b53700, udata=0x0, flags=<optimized out>) at /usr/src/sys/vm/uma_core.c:2250
2520
   2250            bucket = zone_alloc_bucket(zone, udata, flags);
2535
   2250            bucket = zone_alloc_bucket(zone, udata, flags);
2521
   (kgdb) p zone
2536
   (kgdb) p zone
2522
   $2 = (uma_zone_t) 0xfffff80005b53700
2537
   $2 = (uma_zone_t) 0xfffff80005b53700
2523
   (kgdb) p *zone
2538
   (kgdb) p *zone
2524
   $3 = {uz_lock = {lock_object = {lo_name = 0xffffffff8184f85a "uma_test", lo_flags = 21168128, lo_data = 0, lo_witness = 0xfffffe0000a0cf80}, mtx_lock = 4}, uz_lockptr = 0xfffff80005b52480,
2539
   $3 = {uz_lock = {lock_object = {lo_name = 0xffffffff8184f85a "uma_test", lo_flags = 21168128, lo_data = 0, lo_witness = 0xfffffe0000a0cf80}, mtx_lock = 4}, uz_lockptr = 0xfffff80005b52480,
2525
     uz_name = 0xffffffff8184f85a "uma_test", uz_link = {le_next = 0x0, le_prev = 0xfffff80005b52510}, uz_buckets = {lh_first = 0x0}, uz_kegs = {lh_first = 0xfffff80005b537b0}, uz_klink = {kl_link = {le_next = 0x0,
2540
     uz_name = 0xffffffff8184f85a "uma_test", uz_link = {le_next = 0x0, le_prev = 0xfffff80005b52510}, uz_buckets = {lh_first = 0x0}, uz_kegs = {lh_first = 0xfffff80005b537b0}, uz_klink = {kl_link = {le_next = 0x0,
2526
         le_prev = 0xfffff80005b537a8}, kl_keg = 0xfffff80005b52480}, uz_slab = 0xffffffff807dc940 <zone_fetch_slab>, uz_ctor = 0xffffffff807dd730 <trash_ctor>, uz_dtor = 0xffffffff807dd780 <trash_dtor>, uz_init = 0x0,
2541
         le_prev = 0xfffff80005b537a8}, kl_keg = 0xfffff80005b52480}, uz_slab = 0xffffffff807dc940 <zone_fetch_slab>, uz_ctor = 0xffffffff807dd730 <trash_ctor>, uz_dtor = 0xffffffff807dd780 <trash_dtor>, uz_init = 0x0,
2527
     uz_fini = 0x0, uz_import = 0xffffffff807dc9f0 <zone_import>, uz_release = 0xffffffff807dcc90 <zone_release>, uz_arg = 0xfffff80005b53700, uz_flags = 0, uz_size = 129024, uz_allocs = 0, uz_fails = 0, uz_frees = 0,
2542
     uz_fini = 0x0, uz_import = 0xffffffff807dc9f0 <zone_import>, uz_release = 0xffffffff807dcc90 <zone_release>, uz_arg = 0xfffff80005b53700, uz_flags = 0, uz_size = 129024, uz_allocs = 0, uz_fails = 0, uz_frees = 0,
2528
     uz_sleeps = 0, uz_count = 1, uz_count_min = 1, uz_warning = 0x0, uz_ratecheck = {tv_sec = 0, tv_usec = 0}, uz_maxaction = {ta_link = {stqe_next = 0x0}, ta_pending = 0, ta_priority = 0, ta_func = 0x0, ta_context = 0x0},
2543
     uz_sleeps = 0, uz_count = 1, uz_count_min = 1, uz_warning = 0x0, uz_ratecheck = {tv_sec = 0, tv_usec = 0}, uz_maxaction = {ta_link = {stqe_next = 0x0}, ta_pending = 0, ta_priority = 0, ta_func = 0x0, ta_context = 0x0},
2529
     uz_cpu = {{uc_freebucket = 0x0, uc_allocbucket = 0x0, uc_allocs = 0, uc_frees = 0}}}
2544
     uz_cpu = {{uc_freebucket = 0x0, uc_allocbucket = 0x0, uc_allocs = 0, uc_frees = 0}}}
2530
   (kgdb) f 11
2545
   (kgdb) f 11
2531
   #11 g_raid_init (mp=0xffffffff81856838 <g_raid_class>) at /usr/src/sys/modules/geom/geom_raid/../../../geom/raid/g_raid.c:2496
2546
   #11 g_raid_init (mp=0xffffffff81856838 <g_raid_class>) at /usr/src/sys/modules/geom/geom_raid/../../../geom/raid/g_raid.c:2496
2532
   2496                    p = uma_zalloc(uma_test_zone, M_WAITOK);
2547
   2496                    p = uma_zalloc(uma_test_zone, M_WAITOK);
2533
   (kgdb) p i
2548
   (kgdb) p i
2534
   $4 = 0
2549
   $4 = 0
2535
   (kgdb) l -
2550
   (kgdb) l -
2536
   2491
2551
   2491
2537
   2492            uma_test_zone = uma_zcreate("uma_test", uma_test_zone_item_size, NULL, NULL,
2552
   2492            uma_test_zone = uma_zcreate("uma_test", uma_test_zone_item_size, NULL, NULL,
2538
   2493                NULL, NULL, 0, 0);
2553
   2493                NULL, NULL, 0, 0);
2539
   2494
2554
   2494
2540
   2495            for (i = 0; i <= uma_test_zone_item_size; i++) {
2555
   2495            for (i = 0; i <= uma_test_zone_item_size; i++) {
2541
   2496                    p = uma_zalloc(uma_test_zone, M_WAITOK);
2556
   2496                    p = uma_zalloc(uma_test_zone, M_WAITOK);
2542
   2497                    memset(p, 0x10, i);
2557
   2497                    memset(p, 0x10, i);
2543
   2498                    G_RAID_DEBUG(1, "Freeing item after filling %d bytes.", i);
2558
   2498                    G_RAID_DEBUG(1, "Freeing item after filling %d bytes.", i);
2544
   2499                    uma_zfree(uma_test_zone, p);
2559
   2499                    uma_zfree(uma_test_zone, p);
2545
   2500            }
2560
   2500            }
2546
--
2547
sys/geom/raid/g_raid.c | 2 +-
2561
sys/geom/raid/g_raid.c | 2 +-
2548
1 file changed, 1 insertion(+), 1 deletion(-)
2562
1 file changed, 1 insertion(+), 1 deletion(-)
(-)b/sys/geom/raid/g_raid.c (-3 / +1 lines)
Lines 2490-2496 g_raid_init(struct g_class *mp) Link Here
2490
	static int i;
2490
	static int i;
2491
2491
2492
	uma_test_zone = uma_zcreate("uma_test", uma_test_zone_item_size, NULL, NULL,
2492
	uma_test_zone = uma_zcreate("uma_test", uma_test_zone_item_size, NULL, NULL,
2493
	    NULL, NULL, 0, UMA_ZONE_NOFREE);
2493
	    NULL, NULL, 0, 0);
2494
2494
2495
	for (i = 0; i <= uma_test_zone_item_size; i++) {
2495
	for (i = 0; i <= uma_test_zone_item_size; i++) {
2496
		p = uma_zalloc(uma_test_zone, M_WAITOK);
2496
		p = uma_zalloc(uma_test_zone, M_WAITOK);
2497
- 
2498
messages
2497
messages
2499
--
2500
sys/geom/raid/g_raid.c | 24 +++++++++++++++++++-----
2498
sys/geom/raid/g_raid.c | 24 +++++++++++++++++++-----
2501
1 file changed, 19 insertions(+), 5 deletions(-)
2499
1 file changed, 19 insertions(+), 5 deletions(-)
(-)b/sys/geom/raid/g_raid.c (-6 / +19 lines)
Lines 2481-2503 g_raid_shutdown_post_sync(void *arg, int howto) Link Here
2481
static int  uma_test_zone_item_size = 129024;
2481
static int  uma_test_zone_item_size = 129024;
2482
SYSCTL_UINT(_kern_geom_raid, OID_AUTO, uma_test_zone_item_size, CTLFLAG_RWTUN,
2482
SYSCTL_UINT(_kern_geom_raid, OID_AUTO, uma_test_zone_item_size, CTLFLAG_RWTUN,
2483
    &uma_test_zone_item_size, 0, "Item size for uma test zone");
2483
    &uma_test_zone_item_size, 0, "Item size for uma test zone");
2484
2484
static void uma_test(void)
2485
static void
2486
g_raid_init(struct g_class *mp)
2487
{
2485
{
2488
	uma_zone_t uma_test_zone;
2486
	uma_zone_t uma_test_zone;
2489
	void *p;
2487
	void *p;
2490
	static int i;
2488
	static int i;
2489
	static int zone_item_size;
2491
2490
2492
	uma_test_zone = uma_zcreate("uma_test", uma_test_zone_item_size, NULL, NULL,
2491
	zone_item_size = uma_test_zone_item_size;
2492
2493
	G_RAID_DEBUG(1, "Creating uma zone with item size: %d",
2494
	    zone_item_size);
2495
	uma_test_zone = uma_zcreate("uma_test", zone_item_size, NULL, NULL,
2493
	    NULL, NULL, 0, 0);
2496
	    NULL, NULL, 0, 0);
2494
2497
2495
	for (i = 0; i <= uma_test_zone_item_size; i++) {
2498
	for (i = 0; i <= zone_item_size; i++) {
2496
		p = uma_zalloc(uma_test_zone, M_WAITOK);
2499
		p = uma_zalloc(uma_test_zone, M_WAITOK);
2497
		memset(p, 0x10, i);
2500
		memset(p, 0x10, i);
2498
		G_RAID_DEBUG(1, "Freeing item after filling %d bytes.", i);
2501
		G_RAID_DEBUG(1, "Freeing item after filling %d bytes.", i);
2499
		uma_zfree(uma_test_zone, p);
2502
		uma_zfree(uma_test_zone, p);
2500
	}
2503
	}
2504
2505
	G_RAID_DEBUG(1, "Destroying uma zone with item size: %d",
2506
	    zone_item_size);
2507
	uma_zdestroy(uma_test_zone);
2508
}
2509
2510
static void
2511
g_raid_init(struct g_class *mp)
2512
{
2513
2514
	uma_test();
2501
	g_raid_post_sync = EVENTHANDLER_REGISTER(shutdown_post_sync,
2515
	g_raid_post_sync = EVENTHANDLER_REGISTER(shutdown_post_sync,
2502
	    g_raid_shutdown_post_sync, mp, SHUTDOWN_PRI_FIRST);
2516
	    g_raid_shutdown_post_sync, mp, SHUTDOWN_PRI_FIRST);
2503
	if (g_raid_post_sync == NULL)
2517
	if (g_raid_post_sync == NULL)
2504
- 

Return to bug 218911