xfs_agnumber_t end_ag;
xfs_agnumber_t agno;
xfs_daddr_t eofs;
- struct xfs_rmap_irec low;
- struct xfs_rmap_irec high;
+ struct xfs_rmap_irec low = {0};
+ struct xfs_rmap_irec high = {0};
struct xfs_btree_cur *bt_cur;
struct xfs_buf *agbp;
int error;
end_fsb = XFS_DADDR_TO_FSB(mp, eofs - 1);
low.rm_startblock = XFS_FSB_TO_AGBNO(mp, start_fsb);
- low.rm_owner = 0;
- low.rm_offset = 0;
- low.rm_flags = 0;
high.rm_startblock = -1U;
high.rm_owner = ULLONG_MAX;
high.rm_offset = ULLONG_MAX;
* and set the rightsib pointer of current block
*/
#ifdef XR_BLD_INO_TRACE
- fprintf(stderr, " ino prop agbno %d ", lptr->prev_agbno);
+ fprintf(stderr, " rmap prop agbno %d ", lptr->prev_agbno);
#endif
if (lptr->prev_agbno != NULLAGBLOCK) {
ASSERT(lptr->prev_buf_p != NULL);
prop_rmap_cursor(mp, agno, btree_curs, rm_rec, level);
}
/*
- * add inode info to current block
+ * add rmap info to current block
*/
be16_add_cpu(&bt_hdr->bb_numrecs, 1);
struct xfs_btree_block *bt_hdr;
struct xfs_rmap_key *bt_key;
struct bt_stat_level *lptr;
- struct xfs_rmap_irec key;
+ struct xfs_rmap_irec key = {0};
struct xfs_rmap_irec high_key;
int level;
int i;
int numrecs;
- key.rm_flags = 0;
high_key = *rm_highkey;
for (level = 1; level < btree_curs->num_levels; level++) {
lptr = &btree_curs->level[level];
struct xfs_rmap_irec *rm_rec;
struct xfs_slab_cursor *rmap_cur;
struct xfs_rmap_rec *bt_rec;
- struct xfs_rmap_irec highest_key;
- struct xfs_rmap_irec hi_key;
+ struct xfs_rmap_irec highest_key = {0};
+ struct xfs_rmap_irec hi_key = {0};
struct bt_stat_level *lptr;
int level = btree_curs->num_levels;
int error;
rm_rec = pop_slab_cursor(rmap_cur);
lptr = &btree_curs->level[0];
- for (i = 0; i < lptr->num_blocks; i++) {
+ for (i = 0; i < lptr->num_blocks && rm_rec != NULL; i++) {
/*
* block initialization, lay in block header
*/
if (lptr->modulo > 0)
lptr->modulo--;
- if (lptr->num_recs_pb > 0)
+ if (lptr->num_recs_pb > 0) {
+ ASSERT(rm_rec != NULL);
prop_rmap_cursor(mp, agno, btree_curs, rm_rec, 0);
+ }
bt_rec = (struct xfs_rmap_rec *)
((char *)bt_hdr + XFS_RMAP_BLOCK_LEN);
struct xfs_slab_cursor *cur = NULL;
struct xfs_rmap_irec *prev, *rec;
size_t old_sz;
- int error;
+ int error = 0;
old_sz = slab_count(ag_rmaps[agno].ar_rmaps);
if (slab_count(ag_rmaps[agno].ar_raw_rmaps) == 0)
prev = pop_slab_cursor(cur);
rec = pop_slab_cursor(cur);
- while (rec) {
+ while (prev && rec) {
if (mergeable_rmaps(prev, rec)) {
prev->rm_blockcount += rec->rm_blockcount;
rec = pop_slab_cursor(cur);