- Patch from Krzysztof Blaszkowski <kb@sysmikro.com.pl> with some cosmetics: fixes sometimes incorrect active_pages_total accounting

git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@197 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2007-09-25 09:39:04 +00:00
parent 55ae59599b
commit c5469e6126
+6 -4
View File
@@ -416,7 +416,6 @@ static int sgv_pool_cached_purge(struct sgv_pool_obj *e, int t,
unsigned long rt)
{
EXTRACHECKS_BUG_ON(t == 0);
EXTRACHECKS_BUG_ON(rt == 0);
if (time_after(rt, (e->recycle_entry.time_stamp + t))) {
__sgv_pool_cached_purge(e);
@@ -710,23 +709,26 @@ void *sgv_get_priv(struct sgv_pool_obj *sgv)
void sgv_pool_free(struct sgv_pool_obj *sgv)
{
int order = sgv->order;
int order = sgv->order, pages;
TRACE_MEM("Freeing sgv_obj %p, order %d, sg_entries %p, "
"sg_count %d, allocator_priv %p", sgv, order,
sgv->sg_entries, sgv->sg_count, sgv->allocator_priv);
if (order >= 0) {
sgv->sg_entries[sgv->orig_sg].length = sgv->orig_length;
pages = (sgv->sg_count) ? 1 << order : 0;
sgv_pool_cached_put(sgv);
} else {
sgv->owner_pool->alloc_fns.free_pages_fn(sgv->sg_entries,
sgv->sg_count, sgv->allocator_priv);
pages = (sgv->sg_count) ? 1 << (-order - 1) : 0;
kfree(sgv);
order = -order - 1;
}
spin_lock_bh(&sgv_pools_mgr.mgr.pool_mgr_lock);
sgv_pools_mgr.mgr.thr.active_pages_total -= 1 << order;
sgv_pools_mgr.mgr.thr.active_pages_total -= pages;
spin_unlock_bh(&sgv_pools_mgr.mgr.pool_mgr_lock);
return;
}