Whamcloud - gitweb
LU-4777 lfsck: redefine LFSCK_RBTREE_BITMAP_MASK 03/9703/2
authorFan Yong <fan.yong@intel.com>
Tue, 4 Mar 2014 11:40:48 +0000 (19:40 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 25 Mar 2014 15:29:58 +0000 (15:29 +0000)
It should be the rbtree bitmap bits size, not the bytes size.

Signed-off-by: Fan Yong <fan.yong@intel.com>
Change-Id: I0c090702f3f2f5037926d6384b605751a0a9c948
Reviewed-on: http://review.whamcloud.com/9703
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Lai Siyao <lai.siyao@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
lustre/lfsck/lfsck_layout.c

index 0d5d7e2..de96726 100644 (file)
@@ -368,7 +368,7 @@ static int lfsck_layout_verify_header(struct lov_mds_md_v1 *lmm)
 
 #define LFSCK_RBTREE_BITMAP_SIZE       PAGE_CACHE_SIZE
 #define LFSCK_RBTREE_BITMAP_WIDTH      (LFSCK_RBTREE_BITMAP_SIZE << 3)
-#define LFSCK_RBTREE_BITMAP_MASK       (LFSCK_RBTREE_BITMAP_SIZE - 1)
+#define LFSCK_RBTREE_BITMAP_MASK       (LFSCK_RBTREE_BITMAP_WIDTH - 1)
 
 struct lfsck_rbtree_node {
        struct rb_node   lrn_node;
@@ -392,7 +392,7 @@ static inline int lfsck_rbtree_cmp(struct lfsck_rbtree_node *lrn,
        if (oid < lrn->lrn_first_oid)
                return -1;
 
-       if (oid >= lrn->lrn_first_oid + LFSCK_RBTREE_BITMAP_WIDTH)
+       if (oid - lrn->lrn_first_oid >= LFSCK_RBTREE_BITMAP_WIDTH)
                return 1;
 
        return 0;
@@ -492,19 +492,19 @@ static struct lfsck_rbtree_node *
 lfsck_rbtree_insert(struct lfsck_layout_slave_data *llsd,
                    struct lfsck_rbtree_node *lrn)
 {
-       struct rb_node           **pos    = &(llsd->llsd_rb_root.rb_node);
+       struct rb_node           **pos    = &llsd->llsd_rb_root.rb_node;
        struct rb_node            *parent = NULL;
        struct lfsck_rbtree_node  *tmp;
        int                        rc;
 
-       while (*pos) {
+       while (*pos != NULL) {
                parent = *pos;
-               tmp = rb_entry(*pos, struct lfsck_rbtree_node, lrn_node);
+               tmp = rb_entry(parent, struct lfsck_rbtree_node, lrn_node);
                rc = lfsck_rbtree_cmp(tmp, lrn->lrn_seq, lrn->lrn_first_oid);
                if (rc < 0)
-                       pos = &((*pos)->rb_left);
+                       pos = &(*pos)->rb_left;
                else if (rc > 0)
-                       pos = &((*pos)->rb_right);
+                       pos = &(*pos)->rb_right;
                else
                        return tmp;
        }