-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* GPL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*/
/*
static struct it_node {
struct interval_node node;
- struct list_head list;
+ cfs_list_t list;
int hit, valid;
} *it_array;
static int it_count;
static int count = 1;
if (node->hit == 1) {
- dprintf("NODE "__S" has ever been accessed\n",
- __F(&n->in_extent));
+ error("A duplicate node "__S" access found\n",
+ __F(&n->in_extent));
return INTERVAL_ITER_CONT;
- error("duplicate node accessing found\n");
- return INTERVAL_ITER_STOP;
}
-
+
if (node->valid == 0) {
error("A deleted node "__S" being accessed\n",
__F(&n->in_extent));
interval_search(root, &ext, cb, NULL);
dprintf("\nverifing ...");
-
+
/* verify */
for (i = 0; i < it_count; i++) {
n = &it_array[i];
if (n->valid == 0)
continue;
- if (extent_overlapped(&ext, &n->node.in_extent) &&
+ if (extent_overlapped(&ext, &n->node.in_extent) &&
n->hit == 0)
error("node "__S" overlaps" __S","
- "but never to be hit.\n",
+ "but never to be hit.\n",
__F(&n->node.in_extent),
__F(&ext));
- if (!extent_overlapped(&ext, &n->node.in_extent) &&
+ if (!extent_overlapped(&ext, &n->node.in_extent) &&
n->hit)
- error("node "__S" overlaps" __S", but hit.\n",
+ error("node "__S" overlaps" __S", but hit.\n",
__F(&n->node.in_extent),
__F(&ext));
}
}
if (!has) {
- int count = 1;
+ int count;
err:
+ count = 1;
dprintf("node"__S":%llu Child list:\n",
node->in_extent.start,
node->in_extent.end,
}
if (nr)
error("wrong tree, unbalanced!\n");
-
+
return 0;
}
return 0;
}
-static int contended_count = 0;
+static int contended_count = 0;
#define LOOP_COUNT 1000
static enum interval_iter perf_cb(struct interval_node *n, void *args)
{
long c = e->tv_sec - s->tv_sec;
c *= 1000;
c += (long int)(e->tv_usec - s->tv_usec) / 1000;
- dprintf("\tStart: %lu:%lu -> End: %lu:%lu\n",
+ dprintf("\tStart: %lu:%lu -> End: %lu:%lu\n",
s->tv_sec, s->tv_usec, e->tv_sec, e->tv_usec);
return c;
}
struct it_node *n;
struct timeval start, end;
unsigned long count;
-
+
ext.start = (random() % (max_count - len)) & ALIGN_MASK;
ext.end = (ext.start + len) & ALIGN_MASK;
if (have_wide_lock) {
/* list */
contended_count = 0;
gettimeofday(&start, NULL);
- list_for_each_entry(n, &header, list) {
+ cfs_list_for_each_entry(n, &header, list) {
if (extent_overlapped(&ext, &n->node.in_extent)) {
count = LOOP_COUNT;
while (count--);
if (n->valid) {
if (!interval_find(root, &n->node.in_extent))
error("Cannot find an existent node\n");
- dprintf("Erasing a node "__S"\n",
+ dprintf("Erasing a node "__S"\n",
__F(&n->node.in_extent));
interval_erase(&n->node, &root);
n->valid = 0;
- list_del_init(&n->list);
+ cfs_list_del_init(&n->list);
} else {
__u64 low, high;
low = (random() % max_count) & ALIGN_MASK;
interval_set(&n->node, low, high);
while (interval_insert(&n->node, &root))
interval_set(&n->node, low, ++high);
- dprintf("Adding a node "__S"\n",
+ dprintf("Adding a node "__S"\n",
__F(&n->node.in_extent));
n->valid = 1;
- list_add(&n->list, &header);
+ cfs_list_add(&n->list, &header);
}
}
n->hit = 0;
n->valid = 1;
if (i == 0)
- list_add_tail(&n->list, &header);
+ cfs_list_add_tail(&n->list, &header);
else
- list_add_tail(&n->list, &it_array[rand()%i].list);
+ cfs_list_add_tail(&n->list, &it_array[rand()%i].list);
}
return root;