cluster: RHEL56 - Misc blocklist optimizations
Bob Peterson
rpeterso at fedoraproject.org
Sat Apr 10 04:52:02 UTC 2010
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=f6cdc874f5caa267d13f0f6741765bfaa2c24284
Commit: f6cdc874f5caa267d13f0f6741765bfaa2c24284
Parent: 8639e740d7b51c046d2cffd5b96c6319214b839f
Author: Bob Peterson <bob at ganesha.peterson>
AuthorDate: Wed Nov 25 14:35:29 2009 -0600
Committer: Bob Peterson <rpeterso at redhat.com>
CommitterDate: Fri Apr 9 22:49:39 2010 -0500
Misc blocklist optimizations
rhbz#455300
---
gfs2/fsck/fsck.h | 1 -
gfs2/fsck/metawalk.c | 3 ++-
gfs2/libgfs2/block_list.c | 37 ++++++++++++-------------------------
3 files changed, 14 insertions(+), 27 deletions(-)
diff --git a/gfs2/fsck/fsck.h b/gfs2/fsck/fsck.h
index 7cf0d8b..497be3a 100644
--- a/gfs2/fsck/fsck.h
+++ b/gfs2/fsck/fsck.h
@@ -71,7 +71,6 @@ enum rgindex_trust_level { /* how far can we trust our RG index? */
gfs2_grow or something. Count the RGs by hand. */
};
-struct gfs2_inode *get_system_inode(struct gfs2_sbd *sbp, uint64_t block);
struct gfs2_inode *fsck_load_inode(struct gfs2_sbd *sbp, uint64_t block);
struct gfs2_inode *fsck_inode_get(struct gfs2_sbd *sdp,
struct gfs2_buffer_head *bh);
diff --git a/gfs2/fsck/metawalk.c b/gfs2/fsck/metawalk.c
index 70c3be6..38e1c00 100644
--- a/gfs2/fsck/metawalk.c
+++ b/gfs2/fsck/metawalk.c
@@ -27,7 +27,8 @@
#include "metawalk.h"
#include "hash.h"
-struct gfs2_inode *get_system_inode(struct gfs2_sbd *sbp, uint64_t block)
+static struct gfs2_inode *get_system_inode(struct gfs2_sbd *sbp,
+ uint64_t block)
{
int j;
diff --git a/gfs2/libgfs2/block_list.c b/gfs2/libgfs2/block_list.c
index 208897b..7fec19d 100644
--- a/gfs2/libgfs2/block_list.c
+++ b/gfs2/libgfs2/block_list.c
@@ -26,7 +26,7 @@ static int mark_to_gbmap[16] = {
FREE, BLOCK_IN_USE, DIR_INDIR_BLK, DIR_INODE, FILE_INODE,
LNK_INODE, BLK_INODE, CHR_INODE, FIFO_INODE, SOCK_INODE,
DIR_LEAF_INODE, JOURNAL_BLK, OTHER_META, EATTR_META,
- INVALID_META, INVALID_META
+ BAD_BLOCK, INVALID_META
};
#define BITMAP_SIZE4(size) (size >> 1)
@@ -65,20 +65,6 @@ static int gfs2_bitmap_set(struct gfs2_bmap *bmap, uint64_t offset, uint8_t val)
return -1;
}
-static int gfs2_bitmap_get(struct gfs2_bmap *bmap, uint64_t bit, uint8_t *val)
-{
- static char *byte;
- static uint64_t b;
-
- if(bit < bmap->size) {
- byte = bmap->map + BITMAP_SIZE4(bit);
- b = BITMAP_BYTE_OFFSET4(bit);
- *val = (*byte & (BITMAP_MASK4 << b )) >> b;
- return 0;
- }
- return -1;
-}
-
static int gfs2_bitmap_clear(struct gfs2_bmap *bmap, uint64_t offset)
{
static char *byte;
@@ -267,7 +253,7 @@ int gfs2_block_unmark(struct gfs2_sbd *sdp, struct gfs2_bmap *il,
int gfs2_block_clear(struct gfs2_sbd *sdp, struct gfs2_bmap *il,
uint64_t block)
{
- int err = 0;
+ int err;
gfs2_dup_clear(&sdp->dup_blocks, block);
gfs2_special_clear(&sdp->eattr_blocks, block);
@@ -289,16 +275,17 @@ int gfs2_block_set(struct gfs2_sbd *sdp, struct gfs2_bmap *il,
int gfs2_block_check(struct gfs2_sbd *sdp, struct gfs2_bmap *il,
uint64_t block, struct gfs2_block_query *val)
{
- int err = 0;
+ static char *byte;
+ static uint64_t b;
+
+ if(block >= il->size)
+ return -1;
- val->dup_block = 0;
- val->eattr_block = 0;
- if (dupfind(&sdp->dup_blocks, block))
- val->dup_block = 1;
- if (blockfind(&sdp->eattr_blocks, block))
- val->eattr_block = 1;
- if((err = gfs2_bitmap_get(il, block, &val->block_type)))
- return err;
+ val->dup_block = (dupfind(&sdp->dup_blocks, block) ? 1 : 0);
+ val->eattr_block = (blockfind(&sdp->eattr_blocks, block) ? 1 : 0);
+ byte = il->map + BITMAP_SIZE4(block);
+ b = BITMAP_BYTE_OFFSET4(block);
+ val->block_type = (*byte & (BITMAP_MASK4 << b )) >> b;
return 0;
}
More information about the cluster-commits
mailing list