diff options
author | neal <neal> | 2008-02-20 10:32:20 +0000 |
---|---|---|
committer | neal <neal> | 2008-02-20 10:32:20 +0000 |
commit | 93ed9e4ab7b6a299824f0a2d86b7487c5ff0b2b0 (patch) | |
tree | dd7f923e159af67f21c7922f97f81ce3eea6fd1d /viengoos/activity.c | |
parent | 98d2eb3e9d26c68be3d6008d868e2836d18369e8 (diff) |
2008-02-20 Neal H. Walfield <neal@gnu.org>
* activity.c (activity_destroy): Move objects from VICTIM's priority
tree to its VICTIM->PARENT's priority tree, not its inactive
lists.
Diffstat (limited to 'viengoos/activity.c')
-rw-r--r-- | viengoos/activity.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/viengoos/activity.c b/viengoos/activity.c index 5bd6d4d..714921c 100644 --- a/viengoos/activity.c +++ b/viengoos/activity.c @@ -138,22 +138,30 @@ activity_destroy (struct activity *activity, struct activity *victim) count ++; } - struct object_desc *next = hurd_btree_priorities_first (&victim->priorities); + struct object_desc *next + = hurd_btree_priorities_first (&victim->priorities); while ((desc = next)) { assert (! desc->eviction_candidate); assert (desc->activity == victim); + assert (desc->policy.priority != OBJECT_PRIORITY_LRU); next = hurd_btree_priorities_next (desc); desc->age = 0; + desc->activity = victim->parent; - if (desc->dirty && ! desc->policy.discardable) - activity_lru_list_queue (&victim->parent->inactive_dirty, desc); - else - activity_lru_list_queue (&victim->parent->inactive_clean, desc); +#ifndef NDEBUG + /* We don't detach it from the tree as we destroy the tree in + its entirety. But, the insert code expects the fields to + be zero'd. */ + memset (&desc->priority_node, 0, sizeof (desc->priority_node)); +#endif + + void *ret = hurd_btree_priorities_insert (&victim->parent->priorities, + desc); + assert (! ret); - desc->activity = victim->parent; count ++; } #ifndef NDEBUG |