diff options
author | jeff <jeff@FreeBSD.org> | 2013-06-20 19:08:12 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2013-06-20 19:08:12 +0000 |
commit | a6b6e4783cacc87cafc71706cba9641c4c3718cf (patch) | |
tree | b028c6ab28bde9b40465f529e8e9618d39716baf /sys/vm/uma_dbg.c | |
parent | da3b12a1bbf9d2863451efdee810a0ee646494a9 (diff) | |
download | FreeBSD-src-a6b6e4783cacc87cafc71706cba9641c4c3718cf.zip FreeBSD-src-a6b6e4783cacc87cafc71706cba9641c4c3718cf.tar.gz |
- Add a per-zone lock for zones without kegs.
- Be more explicit about zone vs keg locking. This functionally changes
almost nothing.
- Add a size parameter to uma_zcache_create() so we can size the buckets.
- Pass the zone to bucket_alloc() so it can modify allocation flags
as appropriate.
- Fix a bug in zone_alloc_bucket() where I missed an address of operator
in a failure case. (Found by pho)
Sponsored by: EMC / Isilon Storage Division
Diffstat (limited to 'sys/vm/uma_dbg.c')
-rw-r--r-- | sys/vm/uma_dbg.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/vm/uma_dbg.c b/sys/vm/uma_dbg.c index 47dd81d..48a5e6d 100644 --- a/sys/vm/uma_dbg.c +++ b/sys/vm/uma_dbg.c @@ -231,6 +231,8 @@ uma_dbg_alloc(uma_zone_t zone, uma_slab_t slab, void *item) uma_keg_t keg; int freei; + if (zone_first_keg(zone) == NULL) + return; if (slab == NULL) { slab = uma_dbg_getslab(zone, item); if (slab == NULL) @@ -259,6 +261,8 @@ uma_dbg_free(uma_zone_t zone, uma_slab_t slab, void *item) uma_keg_t keg; int freei; + if (zone_first_keg(zone) == NULL) + return; if (slab == NULL) { slab = uma_dbg_getslab(zone, item); if (slab == NULL) |