// TODO Not supported static int read_old_bitmaps(struct reiserfs_mount *rmp) { return (EOPNOTSUPP); #if 0 int i; struct reiserfs_sb_info *sbi = rmp->rm_reiserfs; struct reiserfs_super_block *rs = SB_DISK_SUPER_BLOCK(sbi); /* First of bitmap blocks */ int bmp1 = (REISERFS_OLD_DISK_OFFSET / sbi->s_blocksize) * btodb(sbi->s_blocksize); /* Read true bitmap */ SB_AP_BITMAP(sbi) = malloc(sizeof (struct reiserfs_buffer_info *) * sb_bmap_nr(rs), M_REISERFSMNT, M_WAITOK | M_ZERO); if (!SB_AP_BITMAP(sbi)) return 1; for (i = 0; i < sb_bmap_nr(rs); i ++) { SB_AP_BITMAP(sbi)[i].bp = getblk(rmp->rm_devvp, (bmp1 + i) * btodb(sbi->s_blocksize), sbi->s_blocksize, 0, 0, 0); if (!SB_AP_BITMAP(sbi)[i].bp) return 1; load_bitmap_info_data(sbi, SB_AP_BITMAP(sbi) + i); } return 0; #endif }
static int read_bitmaps (struct super_block * s) { int i, bmp; SB_AP_BITMAP (s) = vmalloc (sizeof (struct reiserfs_bitmap_info) * SB_BMAP_NR(s)); if (SB_AP_BITMAP (s) == 0) return 1; memset (SB_AP_BITMAP (s), 0, sizeof (struct reiserfs_bitmap_info) * SB_BMAP_NR(s)); for (i = 0, bmp = REISERFS_DISK_OFFSET_IN_BYTES / s->s_blocksize + 1; i < SB_BMAP_NR(s); i++, bmp = s->s_blocksize * 8 * i) { SB_AP_BITMAP (s)[i].bh = sb_getblk (s, bmp); if (!buffer_uptodate(SB_AP_BITMAP(s)[i].bh)) ll_rw_block(READ, 1, &SB_AP_BITMAP(s)[i].bh); } for (i = 0; i < SB_BMAP_NR(s); i++) { wait_on_buffer(SB_AP_BITMAP (s)[i].bh); if (!buffer_uptodate(SB_AP_BITMAP(s)[i].bh)) { reiserfs_warning("sh-2029: reiserfs read_bitmaps: " "bitmap block (#%lu) reading failed\n", SB_AP_BITMAP(s)[i].bh->b_blocknr); for (i = 0; i < SB_BMAP_NR(s); i++) brelse(SB_AP_BITMAP(s)[i].bh); vfree(SB_AP_BITMAP(s)); SB_AP_BITMAP(s) = NULL; return 1; } load_bitmap_info_data (s, SB_AP_BITMAP (s) + i); } return 0; }
/* * Read the bitmaps */ static int read_bitmaps(struct reiserfs_mount *rmp) { int i, bmap_nr; struct buf *bp = NULL; struct reiserfs_sb_info *sbi = rmp->rm_reiserfs; /* Allocate memory for the table of bitmaps */ SB_AP_BITMAP(sbi) = malloc(sizeof(struct reiserfs_bitmap_info) * SB_BMAP_NR(sbi), M_REISERFSMNT, M_WAITOK | M_ZERO); if (!SB_AP_BITMAP(sbi)) return (ENOMEM); /* Read all the bitmaps */ for (i = 0, bmap_nr = (REISERFS_DISK_OFFSET_IN_BYTES / sbi->s_blocksize + 1) * btodb(sbi->s_blocksize); i < SB_BMAP_NR(sbi); i++, bmap_nr = sbi->s_blocksize * 8 * i) { SB_AP_BITMAP(sbi)[i].bp_data = malloc(sbi->s_blocksize, M_REISERFSMNT, M_WAITOK | M_ZERO); if (!SB_AP_BITMAP(sbi)[i].bp_data) return (ENOMEM); bread(rmp->rm_devvp, bmap_nr, sbi->s_blocksize, NOCRED, &bp); bcopy(bp->b_data, SB_AP_BITMAP(sbi)[i].bp_data, sbi->s_blocksize); brelse(bp); bp = NULL; /*if (!buffer_uptodate(SB_AP_BITMAP(s)[i].bh)) ll_rw_block(READ, 1, &SB_AP_BITMAP(s)[i].bh);*/ } for (i = 0; i < SB_BMAP_NR(sbi); i++) { /*if (!buffer_uptodate(SB_AP_BITMAP(s)[i].bh)) { reiserfs_warning(s,"sh-2029: reiserfs read_bitmaps: " "bitmap block (#%lu) reading failed", SB_AP_BITMAP(s)[i].bh->b_blocknr); for (i = 0; i < SB_BMAP_NR(s); i++) brelse(SB_AP_BITMAP(s)[i].bh); vfree(SB_AP_BITMAP(s)); SB_AP_BITMAP(s) = NULL; return 1; }*/ load_bitmap_info_data(sbi, SB_AP_BITMAP(sbi) + i); reiserfs_log(LOG_DEBUG, "%d free blocks (starting at block %ld)\n", SB_AP_BITMAP(sbi)[i].free_count, (long)SB_AP_BITMAP(sbi)[i].first_zero_hint); } return (0); }
static int read_old_bitmaps (struct super_block * s) { int i ; struct reiserfs_super_block * rs = SB_DISK_SUPER_BLOCK(s); int bmp1 = (REISERFS_OLD_DISK_OFFSET_IN_BYTES / s->s_blocksize) + 1; /* first of bitmap blocks */ /* read true bitmap */ SB_AP_BITMAP (s) = vmalloc (sizeof (struct reiserfs_buffer_info *) * sb_bmap_nr(rs)); if (SB_AP_BITMAP (s) == 0) return 1; memset (SB_AP_BITMAP (s), 0, sizeof (struct reiserfs_buffer_info *) * sb_bmap_nr(rs)); for (i = 0; i < sb_bmap_nr(rs); i ++) { SB_AP_BITMAP (s)[i].bh = reiserfs_bread (s, bmp1 + i, s->s_blocksize); if (!SB_AP_BITMAP (s)[i].bh) return 1; load_bitmap_info_data (s, SB_AP_BITMAP (s) + i); } return 0; }