From: Darrick J. Wong <djwong@xxxxxxxxxx> Remove the old bag implementation. Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> Reviewed-by: Christoph Hellwig <hch@xxxxxx> --- repair/rmap.c | 7 --- repair/slab.c | 130 --------------------------------------------------------- repair/slab.h | 19 -------- 3 files changed, 156 deletions(-) diff --git a/repair/rmap.c b/repair/rmap.c index 7cb3a315a..553c7a6c3 100644 --- a/repair/rmap.c +++ b/repair/rmap.c @@ -41,13 +41,6 @@ struct xfs_ag_rmap { int ar_flcount; }; -/* Only the parts of struct xfs_rmap_irec that we need to compute refcounts. */ -struct rmap_for_refcount { - xfs_agblock_t rm_startblock; - xfs_extlen_t rm_blockcount; - uint64_t rm_owner; -}; - static struct xfs_ag_rmap *ag_rmaps; bool rmapbt_suspect; static bool refcbt_suspect; diff --git a/repair/slab.c b/repair/slab.c index 44ca0468e..a0114ac23 100644 --- a/repair/slab.c +++ b/repair/slab.c @@ -77,28 +77,6 @@ struct xfs_slab_cursor { struct xfs_slab_hdr_cursor hcur[0]; /* per-slab cursors */ }; -/* - * Bags -- each bag is an array of record items; when a bag fills up, we resize - * it and hope we don't run out of memory. - */ -#define MIN_BAG_SIZE 4096 -struct xfs_bag { - uint64_t bg_nr; /* number of pointers */ - uint64_t bg_inuse; /* number of slots in use */ - char *bg_items; /* pointer to block of items */ - size_t bg_item_sz; /* size of each item */ -}; - -static inline void *bag_ptr(struct xfs_bag *bag, uint64_t idx) -{ - return &bag->bg_items[bag->bg_item_sz * idx]; -} - -static inline void *bag_end(struct xfs_bag *bag) -{ - return bag_ptr(bag, bag->bg_nr); -} - /* * Create a slab to hold some objects of a particular size. */ @@ -386,111 +364,3 @@ slab_count( { return slab->s_nr_items; } - -/* - * Create a bag to point to some objects. - */ -int -init_bag( - struct xfs_bag **bag, - size_t item_sz) -{ - struct xfs_bag *ptr; - - ptr = calloc(1, sizeof(struct xfs_bag)); - if (!ptr) - return -ENOMEM; - ptr->bg_item_sz = item_sz; - ptr->bg_items = calloc(MIN_BAG_SIZE, item_sz); - if (!ptr->bg_items) { - free(ptr); - return -ENOMEM; - } - ptr->bg_nr = MIN_BAG_SIZE; - *bag = ptr; - return 0; -} - -/* - * Free a bag of pointers. - */ -void -free_bag( - struct xfs_bag **bag) -{ - struct xfs_bag *ptr; - - ptr = *bag; - if (!ptr) - return; - free(ptr->bg_items); - free(ptr); - *bag = NULL; -} - -/* - * Add an object to the pointer bag. - */ -int -bag_add( - struct xfs_bag *bag, - void *ptr) -{ - void *p, *x; - - p = bag_ptr(bag, bag->bg_inuse); - if (p == bag_end(bag)) { - /* No free space, alloc more pointers */ - uint64_t nr; - - nr = bag->bg_nr * 2; - x = realloc(bag->bg_items, nr * bag->bg_item_sz); - if (!x) - return -ENOMEM; - bag->bg_items = x; - memset(bag_end(bag), 0, bag->bg_nr * bag->bg_item_sz); - bag->bg_nr = nr; - p = bag_ptr(bag, bag->bg_inuse); - } - memcpy(p, ptr, bag->bg_item_sz); - bag->bg_inuse++; - return 0; -} - -/* - * Remove a pointer from a bag. - */ -int -bag_remove( - struct xfs_bag *bag, - uint64_t nr) -{ - ASSERT(nr < bag->bg_inuse); - memmove(bag_ptr(bag, nr), bag_ptr(bag, nr + 1), - (bag->bg_inuse - nr - 1) * bag->bg_item_sz); - bag->bg_inuse--; - return 0; -} - -/* - * Return the number of items in a bag. - */ -uint64_t -bag_count( - struct xfs_bag *bag) -{ - return bag->bg_inuse; -} - -/* - * Return the nth item in a bag. - */ -void * -bag_item( - struct xfs_bag *bag, - uint64_t nr) -{ - if (nr >= bag->bg_inuse) - return NULL; - return bag_ptr(bag, nr); -} diff --git a/repair/slab.h b/repair/slab.h index 019b16902..77fb32163 100644 --- a/repair/slab.h +++ b/repair/slab.h @@ -26,23 +26,4 @@ void *peek_slab_cursor(struct xfs_slab_cursor *cur); void advance_slab_cursor(struct xfs_slab_cursor *cur); void *pop_slab_cursor(struct xfs_slab_cursor *cur); -struct xfs_bag; - -int init_bag(struct xfs_bag **bagp, size_t itemsz); -void free_bag(struct xfs_bag **bagp); -int bag_add(struct xfs_bag *bag, void *item); -int bag_remove(struct xfs_bag *bag, uint64_t idx); -uint64_t bag_count(struct xfs_bag *bag); -void *bag_item(struct xfs_bag *bag, uint64_t idx); - -#define foreach_bag_ptr(bag, idx, ptr) \ - for ((idx) = 0, (ptr) = bag_item((bag), (idx)); \ - (idx) < bag_count(bag); \ - (idx)++, (ptr) = bag_item((bag), (idx))) - -#define foreach_bag_ptr_reverse(bag, idx, ptr) \ - for ((idx) = bag_count(bag) - 1, (ptr) = bag_item((bag), (idx)); \ - (ptr) != NULL; \ - (idx)--, (ptr) = bag_item((bag), (idx))) - #endif /* SLAB_H_ */