Whamcloud - gitweb
- removes unused rbtree landmine
authorphil <phil>
Wed, 21 Jan 2004 00:31:13 +0000 (00:31 +0000)
committerphil <phil>
Wed, 21 Jan 2004 00:31:13 +0000 (00:31 +0000)
- reorders ldlm_cli_enqueue arguments to be consistent
- the beginnings of an async completion AST, comprised mostly of false
starts that I will possibly discard in the end

lustre/include/linux/rbtree.h [deleted file]
lustre/mdc/mdc_locks.c
lustre/obdclass/rbtree.c [deleted file]

diff --git a/lustre/include/linux/rbtree.h b/lustre/include/linux/rbtree.h
deleted file mode 100644 (file)
index e35ddc7..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
-  Red Black Trees
-  (C) 1999  Andrea Arcangeli <andrea@suse.de>
-  
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or
-  (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program; if not, write to the Free Software
-  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-  linux/include/linux/rbtree.h
-
-  To use rbtrees you'll have to implement your own insert and search cores.
-  This will avoid us to use callbacks and to drop drammatically performances.
-  I know it's not the cleaner way,  but in C (not in C++) to get
-  performances and genericity...
-
-  Some example of insert and search follows here. The search is a plain
-  normal search over an ordered tree. The insert instead must be implemented
-  int two steps: as first thing the code must insert the element in
-  order as a red leaf in the tree, then the support library function
-  rb_insert_color() must be called. Such function will do the
-  not trivial work to rebalance the rbtree if necessary.
-
------------------------------------------------------------------------
-static inline struct page * rb_search_page_cache(struct inode * inode,
-                                                unsigned long offset)
-{
-       rb_node_t * n = inode->i_rb_page_cache.rb_node;
-       struct page * page;
-
-       while (n)
-       {
-               page = rb_entry(n, struct page, rb_page_cache);
-
-               if (offset < page->offset)
-                       n = n->rb_left;
-               else if (offset > page->offset)
-                       n = n->rb_right;
-               else
-                       return page;
-       }
-       return NULL;
-}
-
-static inline struct page * __rb_insert_page_cache(struct inode * inode,
-                                                  unsigned long offset,
-                                                  rb_node_t * node)
-{
-       rb_node_t ** p = &inode->i_rb_page_cache.rb_node;
-       rb_node_t * parent = NULL;
-       struct page * page;
-
-       while (*p)
-       {
-               parent = *p;
-               page = rb_entry(parent, struct page, rb_page_cache);
-
-               if (offset < page->offset)
-                       p = &(*p)->rb_left;
-               else if (offset > page->offset)
-                       p = &(*p)->rb_right;
-               else
-                       return page;
-       }
-
-       rb_link_node(node, parent, p);
-
-       return NULL;
-}
-
-static inline struct page * rb_insert_page_cache(struct inode * inode,
-                                                unsigned long offset,
-                                                rb_node_t * node)
-{
-       struct page * ret;
-       if ((ret = __rb_insert_page_cache(inode, offset, node)))
-               goto out;
-       rb_insert_color(node, &inode->i_rb_page_cache);
- out:
-       return ret;
-}
------------------------------------------------------------------------
-*/
-
-#ifndef        _LINUX_RBTREE_H
-#define        _LINUX_RBTREE_H
-
-typedef struct rb_node_s
-{
-       struct rb_node_s * rb_parent;
-       int rb_color;
-#define        RB_RED          0
-#define        RB_BLACK        1
-       struct rb_node_s * rb_right;
-       struct rb_node_s * rb_left;
-}
-rb_node_t;
-
-typedef struct rb_root_s
-{
-       struct rb_node_s * rb_node;
-}
-rb_root_t;
-
-#define RB_ROOT        (rb_root_t) { NULL, }
-#define        rb_entry(ptr, type, member)                                     \
-       ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
-
-extern void rb_insert_color(rb_node_t *, rb_root_t *);
-extern void rb_erase(rb_node_t *, rb_root_t *);
-extern rb_node_t *rb_get_first(rb_root_t *root);
-extern rb_node_t *rb_get_next(rb_node_t *n);
-
-static inline void rb_link_node(rb_node_t * node, rb_node_t * parent, rb_node_t ** rb_link)
-{
-       node->rb_parent = parent;
-       node->rb_color = RB_RED;
-       node->rb_left = node->rb_right = NULL;
-
-       *rb_link = node;
-}
-
-#endif /* _LINUX_RBTREE_H */
index 0ac2e3c..a2830b8 100644 (file)
@@ -285,8 +285,9 @@ int mdc_enqueue(struct obd_export *exp,
 
         mdc_get_rpc_lock(obddev->u.cli.cl_rpc_lock, it);
         rc = ldlm_cli_enqueue(exp, req, obddev->obd_namespace, res_id,
-                              lock_type, NULL, lock_mode, &flags, cb_completion,
-                              cb_blocking, NULL, cb_data, NULL, 0, NULL, lockh);
+                              lock_type, NULL, lock_mode, &flags, cb_blocking,
+                              cb_completion, NULL, cb_data, NULL, 0, NULL,
+                              lockh);
         mdc_put_rpc_lock(obddev->u.cli.cl_rpc_lock, it);
 
         /* Similarly, if we're going to replay this request, we don't want to
diff --git a/lustre/obdclass/rbtree.c b/lustre/obdclass/rbtree.c
deleted file mode 100644 (file)
index 9d393d3..0000000
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
-  Red Black Trees
-  (C) 1999  Andrea Arcangeli <andrea@suse.de>
-  
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or
-  (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program; if not, write to the Free Software
-  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-  linux/lib/rbtree.c
-
-  rb_get_first and rb_get_next written by Theodore Ts'o, 9/8/2002
-*/
-
-#include <liblustre.h>
-#include <linux/rbtree.h>
-
-static void __rb_rotate_left(rb_node_t * node, rb_root_t * root)
-{
-       rb_node_t * right = node->rb_right;
-
-       if ((node->rb_right = right->rb_left))
-               right->rb_left->rb_parent = node;
-       right->rb_left = node;
-
-       if ((right->rb_parent = node->rb_parent))
-       {
-               if (node == node->rb_parent->rb_left)
-                       node->rb_parent->rb_left = right;
-               else
-                       node->rb_parent->rb_right = right;
-       }
-       else
-               root->rb_node = right;
-       node->rb_parent = right;
-}
-
-static void __rb_rotate_right(rb_node_t * node, rb_root_t * root)
-{
-       rb_node_t * left = node->rb_left;
-
-       if ((node->rb_left = left->rb_right))
-               left->rb_right->rb_parent = node;
-       left->rb_right = node;
-
-       if ((left->rb_parent = node->rb_parent))
-       {
-               if (node == node->rb_parent->rb_right)
-                       node->rb_parent->rb_right = left;
-               else
-                       node->rb_parent->rb_left = left;
-       }
-       else
-               root->rb_node = left;
-       node->rb_parent = left;
-}
-
-void rb_insert_color(rb_node_t * node, rb_root_t * root)
-{
-       rb_node_t * parent, * gparent;
-
-       while ((parent = node->rb_parent) && parent->rb_color == RB_RED)
-       {
-               gparent = parent->rb_parent;
-
-               if (parent == gparent->rb_left)
-               {
-                       {
-                               register rb_node_t * uncle = gparent->rb_right;
-                               if (uncle && uncle->rb_color == RB_RED)
-                               {
-                                       uncle->rb_color = RB_BLACK;
-                                       parent->rb_color = RB_BLACK;
-                                       gparent->rb_color = RB_RED;
-                                       node = gparent;
-                                       continue;
-                               }
-                       }
-
-                       if (parent->rb_right == node)
-                       {
-                               register rb_node_t * tmp;
-                               __rb_rotate_left(parent, root);
-                               tmp = parent;
-                               parent = node;
-                               node = tmp;
-                       }
-
-                       parent->rb_color = RB_BLACK;
-                       gparent->rb_color = RB_RED;
-                       __rb_rotate_right(gparent, root);
-               } else {
-                       {
-                               register rb_node_t * uncle = gparent->rb_left;
-                               if (uncle && uncle->rb_color == RB_RED)
-                               {
-                                       uncle->rb_color = RB_BLACK;
-                                       parent->rb_color = RB_BLACK;
-                                       gparent->rb_color = RB_RED;
-                                       node = gparent;
-                                       continue;
-                               }
-                       }
-
-                       if (parent->rb_left == node)
-                       {
-                               register rb_node_t * tmp;
-                               __rb_rotate_right(parent, root);
-                               tmp = parent;
-                               parent = node;
-                               node = tmp;
-                       }
-
-                       parent->rb_color = RB_BLACK;
-                       gparent->rb_color = RB_RED;
-                       __rb_rotate_left(gparent, root);
-               }
-       }
-
-       root->rb_node->rb_color = RB_BLACK;
-}
-EXPORT_SYMBOL(rb_insert_color);
-
-static void __rb_erase_color(rb_node_t * node, rb_node_t * parent,
-                            rb_root_t * root)
-{
-       rb_node_t * other;
-
-       while ((!node || node->rb_color == RB_BLACK) && node != root->rb_node)
-       {
-               if (parent->rb_left == node)
-               {
-                       other = parent->rb_right;
-                       if (other->rb_color == RB_RED)
-                       {
-                               other->rb_color = RB_BLACK;
-                               parent->rb_color = RB_RED;
-                               __rb_rotate_left(parent, root);
-                               other = parent->rb_right;
-                       }
-                       if ((!other->rb_left ||
-                            other->rb_left->rb_color == RB_BLACK)
-                           && (!other->rb_right ||
-                               other->rb_right->rb_color == RB_BLACK))
-                       {
-                               other->rb_color = RB_RED;
-                               node = parent;
-                               parent = node->rb_parent;
-                       }
-                       else
-                       {
-                               if (!other->rb_right ||
-                                   other->rb_right->rb_color == RB_BLACK)
-                               {
-                                       register rb_node_t * o_left;
-                                       if ((o_left = other->rb_left))
-                                               o_left->rb_color = RB_BLACK;
-                                       other->rb_color = RB_RED;
-                                       __rb_rotate_right(other, root);
-                                       other = parent->rb_right;
-                               }
-                               other->rb_color = parent->rb_color;
-                               parent->rb_color = RB_BLACK;
-                               if (other->rb_right)
-                                       other->rb_right->rb_color = RB_BLACK;
-                               __rb_rotate_left(parent, root);
-                               node = root->rb_node;
-                               break;
-                       }
-               }
-               else
-               {
-                       other = parent->rb_left;
-                       if (other->rb_color == RB_RED)
-                       {
-                               other->rb_color = RB_BLACK;
-                               parent->rb_color = RB_RED;
-                               __rb_rotate_right(parent, root);
-                               other = parent->rb_left;
-                       }
-                       if ((!other->rb_left ||
-                            other->rb_left->rb_color == RB_BLACK)
-                           && (!other->rb_right ||
-                               other->rb_right->rb_color == RB_BLACK))
-                       {
-                               other->rb_color = RB_RED;
-                               node = parent;
-                               parent = node->rb_parent;
-                       }
-                       else
-                       {
-                               if (!other->rb_left ||
-                                   other->rb_left->rb_color == RB_BLACK)
-                               {
-                                       register rb_node_t * o_right;
-                                       if ((o_right = other->rb_right))
-                                               o_right->rb_color = RB_BLACK;
-                                       other->rb_color = RB_RED;
-                                       __rb_rotate_left(other, root);
-                                       other = parent->rb_left;
-                               }
-                               other->rb_color = parent->rb_color;
-                               parent->rb_color = RB_BLACK;
-                               if (other->rb_left)
-                                       other->rb_left->rb_color = RB_BLACK;
-                               __rb_rotate_right(parent, root);
-                               node = root->rb_node;
-                               break;
-                       }
-               }
-       }
-       if (node)
-               node->rb_color = RB_BLACK;
-}
-
-void rb_erase(rb_node_t * node, rb_root_t * root)
-{
-       rb_node_t * child, * parent;
-       int color;
-
-       if (!node->rb_left)
-               child = node->rb_right;
-       else if (!node->rb_right)
-               child = node->rb_left;
-       else
-       {
-               rb_node_t * old = node, * left;
-
-               node = node->rb_right;
-               while ((left = node->rb_left))
-                       node = left;
-               child = node->rb_right;
-               parent = node->rb_parent;
-               color = node->rb_color;
-
-               if (child)
-                       child->rb_parent = parent;
-               if (parent)
-               {
-                       if (parent->rb_left == node)
-                               parent->rb_left = child;
-                       else
-                               parent->rb_right = child;
-               }
-               else
-                       root->rb_node = child;
-
-               if (node->rb_parent == old)
-                       parent = node;
-               node->rb_parent = old->rb_parent;
-               node->rb_color = old->rb_color;
-               node->rb_right = old->rb_right;
-               node->rb_left = old->rb_left;
-
-               if (old->rb_parent)
-               {
-                       if (old->rb_parent->rb_left == old)
-                               old->rb_parent->rb_left = node;
-                       else
-                               old->rb_parent->rb_right = node;
-               } else
-                       root->rb_node = node;
-
-               old->rb_left->rb_parent = node;
-               if (old->rb_right)
-                       old->rb_right->rb_parent = node;
-               goto color;
-       }
-
-       parent = node->rb_parent;
-       color = node->rb_color;
-
-       if (child)
-               child->rb_parent = parent;
-       if (parent)
-       {
-               if (parent->rb_left == node)
-                       parent->rb_left = child;
-               else
-                       parent->rb_right = child;
-       }
-       else
-               root->rb_node = child;
-
- color:
-       if (color == RB_BLACK)
-               __rb_erase_color(child, parent, root);
-}
-EXPORT_SYMBOL(rb_erase);
-
-/*
- * This function returns the first node (in sort order) of the tree.
- */
-rb_node_t *rb_get_first(rb_root_t *root)
-{
-       rb_node_t       *n;
-
-       n = root->rb_node;
-       if (!n)
-               return 0;
-       while (n->rb_left)
-               n = n->rb_left;
-       return n;
-}
-EXPORT_SYMBOL(rb_get_first);
-
-/*
- * Given a node, this function will return the next node in the tree.
- */
-rb_node_t *rb_get_next(rb_node_t *n)
-{
-       rb_node_t       *parent;
-
-       if (n->rb_right) {
-               n = n->rb_right;
-               while (n->rb_left)
-                       n = n->rb_left;
-               return n;
-       } else {
-               while ((parent = n->rb_parent)) {
-                       if (n == parent->rb_left)
-                               return parent;
-                       n = parent;
-               }
-               return 0;
-       }
-}
-EXPORT_SYMBOL(rb_get_next);
-