From: Bob Peterson <rpete...@redhat.com>

Since the "blockmap" functions were only used in fsck.gfs2 they don't
have a place in libgfs2.  This patch moves them to fsck.gfs2.

rhbz#675723
---
 gfs2/fsck/metawalk.h      |    2 +
 gfs2/fsck/util.c          |   72 ++++++++++++++++++++++++++++++++++++++
 gfs2/fsck/util.h          |   84 +++++++++++++++++++++++++++++++++++++++++++++
 gfs2/libgfs2/block_list.c |   72 --------------------------------------
 gfs2/libgfs2/libgfs2.h    |   82 -------------------------------------------
 5 files changed, 158 insertions(+), 154 deletions(-)

diff --git a/gfs2/fsck/metawalk.h b/gfs2/fsck/metawalk.h
index 719bbd9..e114427 100644
--- a/gfs2/fsck/metawalk.h
+++ b/gfs2/fsck/metawalk.h
@@ -4,6 +4,8 @@
 #define DIR_LINEAR 1
 #define DIR_EXHASH 2
 
+#include "util.h"
+
 struct metawalk_fxns;
 
 extern int check_inode_eattr(struct gfs2_inode *ip,
diff --git a/gfs2/fsck/util.c b/gfs2/fsck/util.c
index 569f25a..4075aec 100644
--- a/gfs2/fsck/util.c
+++ b/gfs2/fsck/util.c
@@ -380,3 +380,75 @@ void dirtree_delete(struct dir_info *b)
        osi_erase(&b->node, &dirtree);
        free(b);
 }
+
+static int gfs2_blockmap_create(struct gfs2_bmap *bmap, uint64_t size)
+{
+       bmap->size = size;
+
+       /* Have to add 1 to BLOCKMAP_SIZE since it's 0-based and mallocs
+        * must be 1-based */
+       bmap->mapsize = BLOCKMAP_SIZE4(size);
+
+       if (!(bmap->map = malloc(sizeof(char) * bmap->mapsize)))
+               return -ENOMEM;
+       if (!memset(bmap->map, 0, sizeof(char) * bmap->mapsize)) {
+               free(bmap->map);
+               bmap->map = NULL;
+               return -ENOMEM;
+       }
+       return 0;
+}
+
+static void gfs2_blockmap_destroy(struct gfs2_bmap *bmap)
+{
+       if (bmap->map)
+               free(bmap->map);
+       bmap->size = 0;
+       bmap->mapsize = 0;
+}
+
+struct gfs2_bmap *gfs2_bmap_create(struct gfs2_sbd *sdp, uint64_t size,
+                                  uint64_t *addl_mem_needed)
+{
+       struct gfs2_bmap *il;
+
+       *addl_mem_needed = 0L;
+       il = malloc(sizeof(*il));
+       if (!il || !memset(il, 0, sizeof(*il)))
+               return NULL;
+
+       if (gfs2_blockmap_create(il, size)) {
+               *addl_mem_needed = il->mapsize;
+               free(il);
+               il = NULL;
+       }
+       osi_list_init(&sdp->eattr_blocks.list);
+       return il;
+}
+
+int gfs2_blockmap_set(struct gfs2_bmap *bmap, uint64_t bblock,
+                     enum gfs2_mark_block mark)
+{
+       static unsigned char *byte;
+       static uint64_t b;
+
+       if (bblock > bmap->size)
+               return -1;
+
+       byte = bmap->map + BLOCKMAP_SIZE4(bblock);
+       b = BLOCKMAP_BYTE_OFFSET4(bblock);
+       *byte &= ~(BLOCKMAP_MASK4 << b);
+       *byte |= (mark & BLOCKMAP_MASK4) << b;
+       return 0;
+}
+
+void *gfs2_bmap_destroy(struct gfs2_sbd *sdp, struct gfs2_bmap *il)
+{
+       if (il) {
+               gfs2_blockmap_destroy(il);
+               free(il);
+               il = NULL;
+       }
+       gfs2_special_free(&sdp->eattr_blocks);
+       return il;
+}
diff --git a/gfs2/fsck/util.h b/gfs2/fsck/util.h
index 56b83fe..b26c123 100644
--- a/gfs2/fsck/util.h
+++ b/gfs2/fsck/util.h
@@ -33,4 +33,88 @@ static inline uint8_t block_type(uint64_t bblock)
        return btype;
 }
 
+/* blockmap declarations and functions */
+enum gfs2_mark_block {
+       gfs2_block_free    = (0x0),
+       gfs2_block_used    = (0x1),
+       gfs2_indir_blk     = (0x2),
+       gfs2_inode_dir     = (0x3),
+       gfs2_inode_file    = (0x4),
+
+       gfs2_inode_lnk     = (0x5),
+       gfs2_inode_blk     = (0x6),
+       gfs2_inode_chr     = (0x7),
+       gfs2_inode_fifo    = (0x8),
+       gfs2_inode_sock    = (0x9),
+
+       gfs2_inode_invalid = (0xa),
+       gfs2_meta_inval    = (0xb),
+       gfs2_leaf_blk      = (0xc),
+       gfs2_meta_rgrp     = (0xd),
+       gfs2_meta_eattr    = (0xe),
+
+       gfs2_bad_block     = (0xf), /* Contains at least one bad block */
+};
+
+static const inline char *block_type_string(uint8_t q)
+{
+       const char *blktyp[] = {
+               "free",
+               "data",
+               "indirect data",
+               "directory",
+               "file",
+
+               "symlink",
+               "block device",
+               "char device",
+               "fifo",
+               "socket",
+
+               "invalid inode",
+               "invalid meta",
+               "dir leaf",
+               "rgrp meta",
+               "eattribute",
+
+               "bad"};
+       if (q < 16)
+               return (blktyp[q]);
+       return blktyp[15];
+}
+
+/* Must be kept in sync with gfs2_mark_block enum above. Blocks marked as
+   invalid or bad are considered metadata until actually freed. */
+static inline int blockmap_to_bitmap(enum gfs2_mark_block m)
+{
+       static int bitmap_states[16] = {
+               GFS2_BLKST_FREE,
+               GFS2_BLKST_USED,
+               GFS2_BLKST_USED,
+               GFS2_BLKST_DINODE,
+               GFS2_BLKST_DINODE,
+
+               GFS2_BLKST_DINODE,
+               GFS2_BLKST_DINODE,
+               GFS2_BLKST_DINODE,
+               GFS2_BLKST_DINODE,
+               GFS2_BLKST_DINODE,
+
+               GFS2_BLKST_FREE,
+               GFS2_BLKST_FREE,
+               GFS2_BLKST_USED,
+               GFS2_BLKST_USED,
+               GFS2_BLKST_USED,
+
+               GFS2_BLKST_USED
+       };
+       return bitmap_states[m];
+}
+
+extern struct gfs2_bmap *gfs2_bmap_create(struct gfs2_sbd *sdp, uint64_t size,
+                                         uint64_t *addl_mem_needed);
+extern void *gfs2_bmap_destroy(struct gfs2_sbd *sdp, struct gfs2_bmap *il);
+extern int gfs2_blockmap_set(struct gfs2_bmap *il, uint64_t block,
+                            enum gfs2_mark_block mark);
+
 #endif /* __UTIL_H__ */
diff --git a/gfs2/libgfs2/block_list.c b/gfs2/libgfs2/block_list.c
index faedc54..65003b0 100644
--- a/gfs2/libgfs2/block_list.c
+++ b/gfs2/libgfs2/block_list.c
@@ -8,51 +8,6 @@
 
 #include "libgfs2.h"
 
-static int gfs2_blockmap_create(struct gfs2_bmap *bmap, uint64_t size)
-{
-       bmap->size = size;
-
-       /* Have to add 1 to BLOCKMAP_SIZE since it's 0-based and mallocs
-        * must be 1-based */
-       bmap->mapsize = BLOCKMAP_SIZE4(size);
-
-       if(!(bmap->map = malloc(sizeof(char) * bmap->mapsize)))
-               return -ENOMEM;
-       if(!memset(bmap->map, 0, sizeof(char) * bmap->mapsize)) {
-               free(bmap->map);
-               bmap->map = NULL;
-               return -ENOMEM;
-       }
-       return 0;
-}
-
-static void gfs2_blockmap_destroy(struct gfs2_bmap *bmap)
-{
-       if(bmap->map)
-               free(bmap->map);
-       bmap->size = 0;
-       bmap->mapsize = 0;
-}
-
-struct gfs2_bmap *gfs2_bmap_create(struct gfs2_sbd *sdp, uint64_t size,
-                                  uint64_t *addl_mem_needed)
-{
-       struct gfs2_bmap *il;
-
-       *addl_mem_needed = 0L;
-       il = malloc(sizeof(*il));
-       if (!il || !memset(il, 0, sizeof(*il)))
-               return NULL;
-
-       if(gfs2_blockmap_create(il, size)) {
-               *addl_mem_needed = il->mapsize;
-               free(il);
-               il = NULL;
-       }
-       osi_list_init(&sdp->eattr_blocks.list);
-       return il;
-}
-
 void gfs2_special_free(struct special_blocks *blist)
 {
        struct special_blocks *f;
@@ -108,30 +63,3 @@ void gfs2_special_clear(struct special_blocks *blocklist, 
uint64_t block)
                free(b);
        }
 }
-
-int gfs2_blockmap_set(struct gfs2_bmap *bmap, uint64_t bblock,
-                     enum gfs2_mark_block mark)
-{
-       static unsigned char *byte;
-       static uint64_t b;
-
-       if(bblock > bmap->size)
-               return -1;
-
-       byte = bmap->map + BLOCKMAP_SIZE4(bblock);
-       b = BLOCKMAP_BYTE_OFFSET4(bblock);
-       *byte &= ~(BLOCKMAP_MASK4 << b);
-       *byte |= (mark & BLOCKMAP_MASK4) << b;
-       return 0;
-}
-
-void *gfs2_bmap_destroy(struct gfs2_sbd *sdp, struct gfs2_bmap *il)
-{
-       if(il) {
-               gfs2_blockmap_destroy(il);
-               free(il);
-               il = NULL;
-       }
-       gfs2_special_free(&sdp->eattr_blocks);
-       return il;
-}
diff --git a/gfs2/libgfs2/libgfs2.h b/gfs2/libgfs2/libgfs2.h
index cc71bd3..a2e1523 100644
--- a/gfs2/libgfs2/libgfs2.h
+++ b/gfs2/libgfs2/libgfs2.h
@@ -273,94 +273,12 @@ struct gfs2_bmap {
 
 /* block_list.c */
 
-enum gfs2_mark_block {
-       gfs2_block_free    = (0x0),
-       gfs2_block_used    = (0x1),
-       gfs2_indir_blk     = (0x2),
-       gfs2_inode_dir     = (0x3),
-       gfs2_inode_file    = (0x4),
-
-       gfs2_inode_lnk     = (0x5),
-       gfs2_inode_blk     = (0x6),
-       gfs2_inode_chr     = (0x7),
-       gfs2_inode_fifo    = (0x8),
-       gfs2_inode_sock    = (0x9),
-
-       gfs2_inode_invalid = (0xa),
-       gfs2_meta_inval    = (0xb),
-       gfs2_leaf_blk      = (0xc),
-       gfs2_meta_rgrp     = (0xd),
-       gfs2_meta_eattr    = (0xe),
-
-       gfs2_bad_block     = (0xf), /* Contains at least one bad block */
-};
-
-static const inline char *block_type_string(uint8_t q)
-{
-       const char *blktyp[] = {
-               "free",
-               "data",
-               "indirect data",
-               "directory",
-               "file",
-
-               "symlink",
-               "block device",
-               "char device",
-               "fifo",
-               "socket",
-
-               "invalid inode",
-               "invalid meta",
-               "dir leaf",
-               "rgrp meta",
-               "eattribute",
-
-               "bad"};
-       if (q < 16)
-               return (blktyp[q]);
-       return blktyp[15];
-}
-
-/* Must be kept in sync with gfs2_mark_block enum above. Blocks marked as
-   invalid or bad are considered metadata until actually freed. */
-static inline int blockmap_to_bitmap(enum gfs2_mark_block m)
-{
-       static int bitmap_states[16] = {
-               GFS2_BLKST_FREE,
-               GFS2_BLKST_USED,
-               GFS2_BLKST_USED,
-               GFS2_BLKST_DINODE,
-               GFS2_BLKST_DINODE,
-
-               GFS2_BLKST_DINODE,
-               GFS2_BLKST_DINODE,
-               GFS2_BLKST_DINODE,
-               GFS2_BLKST_DINODE,
-               GFS2_BLKST_DINODE,
-
-               GFS2_BLKST_FREE,
-               GFS2_BLKST_FREE,
-               GFS2_BLKST_USED,
-               GFS2_BLKST_USED,
-               GFS2_BLKST_USED,
-
-               GFS2_BLKST_USED
-       };
-       return bitmap_states[m];
-}
-
-extern struct gfs2_bmap *gfs2_bmap_create(struct gfs2_sbd *sdp, uint64_t size,
-                                         uint64_t *addl_mem_needed);
 extern struct special_blocks *blockfind(struct special_blocks *blist, uint64_t 
num);
 extern void gfs2_special_add(struct special_blocks *blocklist, uint64_t block);
 extern void gfs2_special_set(struct special_blocks *blocklist, uint64_t block);
 extern void gfs2_special_free(struct special_blocks *blist);
-extern int gfs2_blockmap_set(struct gfs2_bmap *il, uint64_t block,
-                            enum gfs2_mark_block mark);
 extern void gfs2_special_clear(struct special_blocks *blocklist,
                               uint64_t block);
-extern void *gfs2_bmap_destroy(struct gfs2_sbd *sdp, struct gfs2_bmap *il);
 
 /* buf.c */
 extern struct gfs2_buffer_head *__bget_generic(struct gfs2_sbd *sdp,
-- 
1.7.7.5

Reply via email to