Home | History | Annotate | Download | only in e2fsck

Lines Matching refs:fs

58 static int process_block(ext2_filsys fs, blk_t	*blocknr,
61 static int process_bad_block(ext2_filsys fs, blk_t *block_nr,
73 static errcode_t scan_callback(ext2_filsys fs, ext2_inode_scan scan,
77 /* static char *describe_illegal_block(ext2_filsys fs, blk_t block); */
118 static void unwind_pass1(ext2_filsys fs EXT2FS_ATTR((unused)))
132 int e2fsck_pass1_check_device_inode(ext2_filsys fs EXT2FS_ATTR((unused)),
167 int e2fsck_pass1_check_symlink(ext2_filsys fs, ext2_ino_t ino,
182 if (inode->i_size > fs->blocksize)
184 if (ext2fs_extent_open2(fs, ino, inode, &handle))
194 (extent.e_pblk < fs->super->s_first_data_block) ||
195 (extent.e_pblk >= fs->super->s_blocks_count))
203 blocks = ext2fs_inode_data_blocks(fs, inode);
205 if ((inode->i_size >= fs->blocksize) ||
206 (blocks != fs->blocksize >> 9) ||
207 (inode->i_block[0] < fs->super->s_first_data_block) ||
208 (inode->i_block[0] >= fs->super->s_blocks_count))
215 if (io_channel_read_blk(fs->io, inode->i_block[0], 1, buf))
218 len = strnlen(buf, fs->blocksize);
219 if (len == fs->blocksize)
272 struct ext2_super_block *sb = ctx->fs->super;
280 storage_size = EXT2_INODE_SIZE(ctx->fs->super) - EXT2_GOOD_OLD_INODE_SIZE -
284 end = (char *) inode + EXT2_INODE_SIZE(ctx->fs->super);
352 struct ext2_super_block *sb = ctx->fs->super;
440 extent_fs = (ctx->fs->super->s_feature_incompat & EXT3_FEATURE_INCOMPAT_EXTENTS);
443 if (ext2fs_bmap(ctx->fs, pctx->ino, inode, 0, 0, 0,
456 if (blk < ctx->fs->super->s_first_data_block ||
457 blk >= ctx->fs->super->s_blocks_count ||
476 retval = ext2fs_read_dir_block(ctx->fs, blk, buf);
482 retval = ext2fs_get_rec_len(ctx->fs, dirent, &rec_len);
490 (rec_len >= ctx->fs->blocksize - 12))
494 retval = ext2fs_get_rec_len(ctx->fs, dirent, &rec_len);
507 EXT2_INODE_SIZE(ctx->fs->super),
530 retval = ext2fs_get_num_dirs(ctx->fs, &num_dirs);
538 retval = ext2fs_create_icount_tdb(ctx->fs, tdb_dir, flags, ret);
547 ext2_filsys fs = ctx->fs;
558 struct ext2_super_block *sb = ctx->fs->super;
564 init_resource_track(&rtrack, ctx->fs->io);
570 fs->super->s_feature_compat & EXT2_FEATURE_COMPAT_DIR_INDEX) &&
597 pctx.errcode = ext2fs_allocate_inode_bitmap(fs, _("in-use inode map"),
605 pctx.errcode = ext2fs_allocate_inode_bitmap(fs,
613 pctx.errcode = ext2fs_allocate_inode_bitmap(fs,
621 pctx.errcode = ext2fs_allocate_block_bitmap(fs, _("in-use block map"),
631 pctx.errcode = ext2fs_create_icount2(fs, 0, 0, 0,
638 inode_size = EXT2_INODE_SIZE(fs->super);
649 pctx.errcode = ext2fs_init_dblist(fs, 0);
665 if (fs->super->s_last_orphan) {
666 fs->super->s_last_orphan = 0;
667 ext2fs_mark_super_dirty(fs);
672 block_buf = (char *) e2fsck_allocate_memory(ctx, fs->blocksize * 3,
676 pctx.errcode = ext2fs_open_inode_scan(fs, ctx->inode_buffer_blocks,
692 if ((ctx->progress)(ctx, 1, 0, ctx->fs->group_desc_count))
694 if ((fs->super->s_wtime < fs->super->s_inodes_count) ||
695 (fs->super->s_mtime < fs->super->s_inodes_count))
755 ext2fs_mark_super_dirty(fs);
822 pctx.errcode = ext2fs_block_iterate2(fs, ino, 0,
866 if (fs->super->s_journal_inum == EXT2_JOURNAL_INO) {
887 } else if (ino < EXT2_FIRST_INODE(fs->super)) {
930 inode->i_dtime < ctx->fs->super->s_inodes_count) {
972 switch (fs->super->s_creator_os) {
984 if (!(fs->super->s_feature_incompat &
988 if ((fs->super->s_creator_os == EXT2_OS_LINUX) &&
989 !(fs->super->s_feature_ro_compat &
1031 e2fsck_pass1_check_device_inode(fs, inode)) {
1036 e2fsck_pass1_check_device_inode(fs, inode)) {
1041 e2fsck_pass1_check_symlink(fs, ino, inode,
1045 if (ext2fs_inode_data_blocks(fs, inode) == 0) {
1052 e2fsck_pass1_check_device_inode(fs, inode)) {
1057 e2fsck_pass1_check_device_inode(fs, inode)) {
1124 save_bmap = fs->block_map;
1125 fs->block_map = ctx->block_found_map;
1127 pctx.errcode = ext2fs_create_resize_inode(fs);
1139 fs->block_map = save_bmap;
1151 unwind_pass1(fs);
1169 print_resource_track(ctx, _("Pass 1"), &rtrack, ctx->fs->io);
1176 static errcode_t scan_callback(ext2_filsys fs,
1186 process_inodes((e2fsck_t) fs->priv_data, scan_struct->block_buf);
1190 ctx->fs->group_desc_count))
1269 pctx.errcode = ext2fs_allocate_inode_bitmap(ctx->fs,
1291 pctx.errcode = ext2fs_allocate_inode_bitmap(ctx->fs,
1311 pctx.errcode = ext2fs_allocate_inode_bitmap(ctx->fs,
1338 pctx.errcode = ext2fs_allocate_block_bitmap(ctx->fs,
1368 ext2_filsys fs = ctx->fs;
1380 pctx.errcode = ext2fs_read_ext_attr(fs, blk, block_buf);
1391 pctx.errcode = ext2fs_write_ext_attr(fs, blk,
1407 ext2_filsys fs = ctx->fs;
1428 if (!(fs->super->s_feature_compat & EXT2_FEATURE_COMPAT_EXT_ATTR) ||
1429 (blk < fs->super->s_first_data_block) ||
1430 (blk >= fs->super->s_blocks_count)) {
1437 pctx->errcode = ext2fs_allocate_block_bitmap(fs,
1488 pctx->errcode = ext2fs_read_ext_attr(fs, blk, block_buf);
1506 region = region_create(0, fs->blocksize);
1518 end = block_buf + fs->blocksize;
1540 if (entry->e_value_offs + entry->e_value_size > fs->blocksize) {
1591 ext2_filsys fs = ctx->fs;
1597 (!(fs->super->s_feature_compat & EXT2_FEATURE_COMPAT_DIR_INDEX) &&
1601 pctx->errcode = ext2fs_bmap(fs, ino, inode, 0, 0, 0, &blk);
1605 (blk < fs->super->s_first_data_block) ||
1606 (blk >= fs->super->s_blocks_count)) {
1613 retval = io_channel_read_blk(fs->io, blk, 1, block_buf);
1692 if (extent.e_pblk < ctx->fs->super->s_first_data_block ||
1693 fs->super->s_blocks_count)
1699 ctx->fs->super->s_blocks_count)
1773 pctx->errcode = ext2fs_add_dir_block(ctx->fs->dblist,
1788 pctx->errcode = ext2fs_add_dir_block(ctx->fs->dblist, pctx->ino, blk, blockcnt);
1822 ext2_filsys fs = ctx->fs;
1826 pctx->errcode = ext2fs_extent_open2(fs, ino, inode, &ehandle);
1854 static blk64_t ext2fs_inode_i_blocks(ext2_filsys fs,
1858 (fs->super->s_feature_ro_compat &
1870 ext2_filsys fs = ctx->fs;
1890 pb.max_blocks = 1 << (31 - fs->super->s_log_block_size);
1897 extent_fs = (ctx->fs->super->s_feature_incompat &
1901 if (fs->super->s_feature_incompat &
1922 pctx->errcode = ext2fs_block_iterate2(fs, ino,
1933 if (pb.fragmented && pb.num_blocks < fs->super->s_blocks_per_group) {
1965 if (!(fs->super->s_feature_ro_compat &
1968 pb.num_blocks *= (fs->blocksize / 512);
1975 int nblock = inode->i_size >> EXT2_BLOCK_SIZE_BITS(fs->super);
1976 if (inode->i_size & (fs->blocksize - 1))
1982 fs->super->s_prealloc_dir_blocks)
1991 (size < (__u64)pb.last_block * fs->blocksize) &&
1993 size < (__u64)(pb.last_block & ~(blkpg-1)) *fs->blocksize) &&
1997 size > ext2_max_sizes[fs->super->s_log_block_size])
2002 ((1ULL << (32 + EXT2_BLOCK_SIZE_BITS(fs->super))) - 1))
2008 pctx->num = (pb.last_block+1) * fs->blocksize;
2021 if ((pb.num_blocks != ext2fs_inode_i_blocks(fs, inode)) ||
2022 ((fs->super->s_feature_ro_compat &
2037 ((inode->i_size / fs->blocksize) >= 3))
2050 static char *describe_illegal_block(ext2_filsys fs, blk_t block)
2056 super = fs->super->s_first_data_block;
2061 } else if (block >= fs->super->s_blocks_count) {
2062 sprintf(problem, "> BLOCKS (%u)", fs->super->s_blocks_count);
2065 for (i = 0; i < fs->group_desc_count; i++) {
2071 block <= (super + fs->desc_blocks)) {
2076 if (block == fs->group_desc[i].bg_block_bitmap) {
2080 if (block == fs->group_desc[i].bg_inode_bitmap) {
2084 if (block >= fs->group_desc[i].bg_inode_table &&
2085 (block < fs->group_desc[i].bg_inode_table
2086 + fs->inode_blocks_per_group)) {
2091 super += fs->super->s_blocks_per_group;
2100 static int process_block(ext2_filsys fs,
2175 if (p->is_dir && blockcnt > (1 << (21 - fs->super->s_log_block_size)))
2182 if (blk < fs->super->s_first_data_block ||
2183 blk >= fs->super->s_blocks_count)
2227 pctx->errcode = ext2fs_add_dir_block(fs->dblist,
2236 pctx->errcode = ext2fs_add_dir_block(fs->dblist, p->ino,
2251 static int process_bad_block(ext2_filsys fs,
2281 if ((blk < fs->super->s_first_data_block) ||
2282 (blk >= fs->super->s_blocks_count)) {
2328 first_block = fs->super->s_first_data_block;
2330 for (i = 0; i < fs->group_desc_count; i++ ) {
2333 if (!ext2fs_bg_has_super(fs, i))
2349 (blk <= first_block + fs->desc_blocks)) {
2363 if (blk == fs->group_desc[i].bg_block_bitmap) {
2370 if (blk == fs->group_desc[i].bg_inode_bitmap) {
2377 if ((blk >= fs->group_desc[i].bg_inode_table) &&
2378 (blk < (fs->group_desc[i].bg_inode_table +
2379 fs->inode_blocks_per_group))) {
2387 first_block += fs->super->s_blocks_per_group;
2418 ext2_filsys fs = ctx->fs;
2437 is_flexbg = EXT2_HAS_INCOMPAT_FEATURE(fs->super,
2440 flexbg_size = 1 << fs->super->s_log_groups_per_flex;
2442 first_block = ext2fs_group_first_block(fs,
2445 if (last_grp > fs->group_desc_count)
2446 last_grp = fs->group_desc_count;
2447 last_block = ext2fs_group_last_block(fs, last_grp);
2449 last_block = ext2fs_group_last_block(fs, group);
2450 pctx.errcode = ext2fs_get_free_blocks(fs, first_block, last_block,
2454 pctx.errcode = ext2fs_get_free_blocks(fs,
2455 fs->super->s_first_data_block,
2456 fs->super->s_blocks_count,
2461 ext2fs_unmark_valid(fs);
2465 pctx.errcode = ext2fs_get_mem(fs->blocksize, &buf);
2468 ext2fs_unmark_valid(fs);
2472 ext2fs_mark_super_dirty(fs);
2473 fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY;
2482 pctx.errcode = io_channel_read_blk(fs->io,
2487 memset(buf, 0, fs->blocksize);
2490 pctx.errcode = io_channel_write_blk(fs->io, pctx.blk,
2507 ext2_filsys fs = ctx->fs;
2511 for (i = 0; i < fs->group_desc_count; i++) {
2512 first_block = ext2fs_group_first_block(fs, i);
2516 1, &fs->group_desc[i].bg_block_bitmap);
2520 1, &fs->group_desc[i].bg_inode_bitmap);
2524 fs->inode_blocks_per_group,
2525 &fs->group_desc[i].bg_inode_table);
2538 ext2_filsys fs = ctx->fs;
2546 for (i = 0; i < fs->group_desc_count; i++) {
2549 ext2fs_reserve_super_and_bgd(fs, i, ctx->block_found_map);
2554 if (fs->group_desc[i].bg_inode_table) {
2555 for (j = 0, b = fs->group_desc[i].bg_inode_table;
2556 j < fs->inode_blocks_per_group;
2577 if (fs->group_desc[i].bg_block_bitmap) {
2579 fs->group_desc[i].bg_block_bitmap)) {
2580 pctx.blk = fs->group_desc[i].bg_block_bitmap;
2587 fs->group_desc[i].bg_block_bitmap);
2594 if (fs->group_desc[i].bg_inode_bitmap) {
2596 fs->group_desc[i].bg_inode_bitmap)) {
2597 pctx.blk = fs->group_desc[i].bg_inode_bitmap;
2604 fs->group_desc[i].bg_inode_bitmap);
2616 static errcode_t pass1_get_blocks(ext2_filsys fs, ext2_ino_t ino,
2619 e2fsck_t ctx = (e2fsck_t) fs->priv_data;
2630 static errcode_t pass1_read_inode(ext2_filsys fs, ext2_ino_t ino,
2633 e2fsck_t ctx = (e2fsck_t) fs->priv_data;
2641 static errcode_t pass1_write_inode(ext2_filsys fs, ext2_ino_t ino,
2644 e2fsck_t ctx = (e2fsck_t) fs->priv_data;
2652 static errcode_t pass1_check_directory(ext2_filsys fs, ext2_ino_t ino)
2654 e2fsck_t ctx = (e2fsck_t) fs->priv_data;
2664 static errcode_t e2fsck_get_alloc_block(ext2_filsys fs, blk64_t goal,
2667 e2fsck_t ctx = (e2fsck_t) fs->priv_data;
2672 retval = ext2fs_new_block(fs, (blk_t) goal,
2676 if (fs->block_map) {
2677 ext2fs_mark_block_bitmap(fs->block_map, new_block);
2678 ext2fs_mark_bb_dirty(fs);
2681 if (!fs->block_map) {
2682 retval = ext2fs_read_block_bitmap(fs);
2687 retval = ext2fs_new_block(fs, (blk_t) goal, 0, &new_block);
2696 static void e2fsck_block_alloc_stats(ext2_filsys fs, blk64_t blk, int inuse)
2698 e2fsck_t ctx = (e2fsck_t) fs->priv_data;
2712 ext2_filsys fs = ctx->fs;
2715 fs->get_blocks = pass1_get_blocks;
2716 fs->check_directory = pass1_check_directory;
2717 fs->read_inode = pass1_read_inode;
2718 fs->write_inode = pass1_write_inode;
2720 ext2fs_set_alloc_block_callback(fs, e2fsck_get_alloc_block,
2722 ext2fs_set_block_alloc_stats_callback(fs,
2726 fs->get_blocks = 0;
2727 fs->check_directory = 0;
2728 fs->read_inode = 0;
2729 fs->write_inode = 0;