summaryrefslogtreecommitdiff
path: root/viengoos/activity.c
diff options
context:
space:
mode:
authorneal <neal>2008-02-20 10:32:20 +0000
committerneal <neal>2008-02-20 10:32:20 +0000
commit93ed9e4ab7b6a299824f0a2d86b7487c5ff0b2b0 (patch)
treedd7f923e159af67f21c7922f97f81ce3eea6fd1d /viengoos/activity.c
parent98d2eb3e9d26c68be3d6008d868e2836d18369e8 (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.c20
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