Home | History | Annotate | Download | only in e2fsck

Lines Matching defs:pctx

64 static void check_blocks(e2fsck_t ctx, struct problem_context *pctx,
90 struct problem_context *pctx;
239 static void check_immutable(e2fsck_t ctx, struct problem_context *pctx)
241 if (!(pctx->inode->i_flags & BAD_SPECIAL_FLAGS))
244 if (!fix_problem(ctx, PR_1_SET_IMMUTABLE, pctx))
247 pctx->inode->i_flags &= ~BAD_SPECIAL_FLAGS;
248 e2fsck_write_inode(ctx, pctx->ino, pctx->inode, "pass1");
255 static void check_size(e2fsck_t ctx, struct problem_context *pctx)
257 struct ext2_inode *inode = pctx->inode;
262 if (!fix_problem(ctx, PR_1_SET_NONZSIZE, pctx))
267 e2fsck_write_inode(ctx, pctx->ino, pctx->inode, "pass1");
270 static void check_ea_in_inode(e2fsck_t ctx, struct problem_context *pctx)
279 inode = (struct ext2_inode_large *) pctx->inode;
300 pctx->num = entry->e_name_len;
310 pctx->num = entry->e_value_size;
317 pctx->num = entry->e_value_block;
327 pctx->num = entry->e_hash;
341 if (problem == 0 || !fix_problem(ctx, problem, pctx))
346 e2fsck_write_inode_full(ctx, pctx->ino, pctx->inode,
350 static void check_inode_extra_space(e2fsck_t ctx, struct problem_context *pctx)
357 inode = (struct ext2_inode_large *) pctx->inode;
364 printf("inode #%u, i_extra_size %d\n", pctx->ino,
376 if (!fix_problem(ctx, PR_1_EXTRA_ISIZE, pctx))
379 e2fsck_write_inode_full(ctx, pctx->ino, pctx->inode,
388 check_ea_in_inode(ctx, pctx);
400 static void check_is_really_dir(e2fsck_t ctx, struct problem_context *pctx,
403 struct ext2_inode *inode = pctx->inode;
443 if (ext2fs_bmap(ctx->fs, pctx->ino, inode, 0, 0, 0,
487 (dirent->inode != pctx->ino) ||
504 if (fix_problem(ctx, PR_1_TREAT_AS_DIRECTORY, pctx)) {
506 e2fsck_write_inode_full(ctx, pctx->ino, inode,
556 struct problem_context pctx;
565 clear_problem_context(&pctx);
568 fix_problem(ctx, PR_1_PASS_HEADER, &pctx);
597 pctx.errcode = ext2fs_allocate_inode_bitmap(fs, _("in-use inode map"),
599 if (pctx.errcode) {
600 pctx.num = 1;
601 fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR, &pctx);
605 pctx.errcode = ext2fs_allocate_inode_bitmap(fs,
607 if (pctx.errcode) {
608 pctx.num = 2;
609 fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR, &pctx);
613 pctx.errcode = ext2fs_allocate_inode_bitmap(fs,
615 if (pctx.errcode) {
616 pctx.num = 6;
617 fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR, &pctx);
621 pctx.errcode = ext2fs_allocate_block_bitmap(fs, _("in-use block map"),
623 if (pctx.errcode) {
624 pctx.num = 1;
625 fix_problem(ctx, PR_1_ALLOCATE_BBITMAP_ERROR, &pctx);
631 pctx.errcode = ext2fs_create_icount2(fs, 0, 0, 0,
633 if (pctx.errcode) {
634 fix_problem(ctx, PR_1_ALLOCATE_ICOUNT, &pctx);
649 pctx.errcode = ext2fs_init_dblist(fs, 0);
650 if (pctx.errcode) {
651 fix_problem(ctx, PR_1_ALLOCATE_DBCOUNT, &pctx);
676 pctx.errcode = ext2fs_open_inode_scan(fs, ctx->inode_buffer_blocks,
679 if (pctx.errcode) {
680 fix_problem(ctx, PR_1_ISCAN_ERROR, &pctx);
700 pctx.errcode = ext2fs_get_next_inode_full(scan, &ino,
705 if (pctx.errcode == EXT2_ET_BAD_BLOCK_IN_INODE_TABLE) {
712 if (pctx.errcode) {
713 fix_problem(ctx, PR_1_ISCAN_ERROR, &pctx);
719 pctx.ino = ino;
720 pctx.inode = inode;
723 pctx.errcode = ext2fs_icount_store(ctx->inode_link_info,
725 if (pctx.errcode) {
726 pctx.num = inode->i_links_count;
727 fix_problem(ctx, PR_1_ICOUNT_STORE, &pctx);
753 fix_problem(ctx, PR_1_EXTENT_FEATURE, &pctx)) {
757 } else if (fix_problem(ctx, PR_1_EXTENTS_SET, &pctx)) {
792 (fix_problem(ctx, PR_1_UNSET_EXTENT_FL, &pctx))) {
805 pctx.errcode = ext2fs_copy_bitmap(ctx->block_found_map,
807 if (pctx.errcode) {
808 pctx.num = 4;
809 fix_problem(ctx, PR_1_ALLOCATE_BBITMAP_ERROR, &pctx);
820 pb.pctx = &pctx;
822 pctx.errcode = ext2fs_block_iterate2(fs, ino, 0,
825 if (pctx.errcode) {
826 fix_problem(ctx, PR_1_BLOCK_ITERATE, &pctx);
831 if (!fix_problem(ctx, PR_1_BBINODE_BAD_METABLOCK_PROMPT, &pctx)) {
836 clear_problem_context(&pctx);
845 if (fix_problem(ctx, PR_1_ROOT_NO_DIR, &pctx))
858 if (fix_problem(ctx, PR_1_ROOT_DTIME, &pctx)) {
869 &pctx)) {
874 check_blocks(ctx, &pctx, block_buf);
880 &pctx)) {
903 if (fix_problem(ctx, problem, &pctx)) {
909 check_blocks(ctx, &pctx, block_buf);
931 if (fix_problem(ctx, PR_1_LOW_DTIME, &pctx)) {
946 PR_1_ZERO_DTIME, &pctx)) {
965 if (fix_problem(ctx, PR_1_SET_DTIME, &pctx)) {
1000 if (fix_problem(ctx, PR_1_SET_IMAGIC, &pctx)) {
1008 check_inode_extra_space(ctx, &pctx);
1009 check_is_really_dir(ctx, &pctx, block_buf);
1018 fix_problem(ctx, PR_1_FAST_SYMLINK_EXTENT_FL, &pctx)) {
1032 check_immutable(ctx, &pctx);
1033 check_size(ctx, &pctx);
1037 check_immutable(ctx, &pctx);
1038 check_size(ctx, &pctx);
1043 check_immutable(ctx, &pctx);
1047 check_blocks(ctx, &pctx, block_buf);
1053 check_immutable(ctx, &pctx);
1054 check_size(ctx, &pctx);
1058 check_immutable(ctx, &pctx);
1059 check_size(ctx, &pctx);
1080 check_blocks(ctx, &pctx, block_buf);
1126 clear_problem_context(&pctx);
1127 pctx.errcode = ext2fs_create_resize_inode(fs);
1128 if (pctx.errcode) {
1130 &pctx)) {
1134 pctx.errcode = 0;
1136 if (!pctx.errcode) {
1161 clear_problem_context(&pctx);
1162 fix_problem(ctx, PR_1_DUP_BLOCKS_PREENSTOP, &pctx);
1210 struct problem_context pctx;
1222 clear_problem_context(&pctx);
1224 pctx.inode = ctx->stashed_inode = &inodes_to_process[i].inode;
1225 pctx.ino = ctx->stashed_ino = inodes_to_process[i].ino;
1228 printf("%u ", pctx.ino);
1231 pctx.ino);
1233 check_blocks(ctx, &pctx, block_buf);
1268 struct problem_context pctx;
1271 clear_problem_context(&pctx);
1273 pctx.errcode = ext2fs_allocate_inode_bitmap(ctx->fs,
1275 if (pctx.errcode) {
1276 pctx.num = 3;
1277 fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR, &pctx);
1292 struct problem_context pctx;
1294 clear_problem_context(&pctx);
1295 pctx.errcode = ext2fs_allocate_inode_bitmap(ctx->fs,
1298 if (pctx.errcode) {
1299 pctx.num = 4;
1300 fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR, &pctx);
1312 struct problem_context pctx;
1314 clear_problem_context(&pctx);
1315 pctx.errcode = ext2fs_allocate_inode_bitmap(ctx->fs,
1318 if (pctx.errcode) {
1319 pctx.num = 5;
1320 fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR, &pctx);
1336 struct problem_context pctx;
1338 clear_problem_context(&pctx);
1342 pctx.errcode = ext2fs_allocate_block_bitmap(ctx->fs,
1345 if (pctx.errcode) {
1346 pctx.num = 3;
1348 &pctx);
1371 struct problem_context pctx;
1377 clear_problem_context(&pctx);
1383 pctx.blk = blk;
1384 pctx.errcode = ext2fs_read_ext_attr(fs, blk, block_buf);
1385 if (pctx.errcode) {
1386 fix_problem(ctx, PR_1_EXTATTR_READ_ABORT, &pctx);
1390 pctx.blkcount = header->h_refcount;
1392 pctx.num = should_be;
1393 if (fix_problem(ctx, PR_1_EXTATTR_REFCOUNT, &pctx)) {
1395 pctx.errcode = ext2fs_write_ext_attr(fs, blk,
1397 if (pctx.errcode) {
1399 &pctx);
1409 static int check_ext_attr(e2fsck_t ctx, struct problem_context *pctx,
1413 ext2_ino_t ino = pctx->ino;
1414 struct ext2_inode *inode = pctx->inode;
1442 pctx->errcode = ext2fs_allocate_block_bitmap(fs,
1445 if (pctx->errcode) {
1446 pctx->num = 2;
1447 fix_problem(ctx, PR_1_ALLOCATE_BBITMAP_ERROR, pctx);
1455 pctx->errcode = ea_refcount_create(0, &ctx->refcount);
1456 if (pctx->errcode) {
1457 pctx->num = 1;
1458 fix_problem(ctx, PR_1_ALLOCATE_REFCOUNT, pctx);
1475 pctx->errcode = ea_refcount_create(0,
1477 if (pctx->errcode) {
1478 pctx->num = 2;
1479 fix_problem(ctx, PR_1_ALLOCATE_REFCOUNT, pctx);
1492 pctx->blk = blk;
1493 pctx->errcode = ext2fs_read_ext_attr(fs, blk, block_buf);
1494 if (pctx->errcode && fix_problem(ctx, PR_1_READ_EA_BLOCK, pctx))
1497 pctx->blk = inode->i_file_acl;
1502 if (fix_problem(ctx, PR_1_BAD_EA_BLOCK, pctx))
1507 if (fix_problem(ctx, PR_1_EA_MULTI_BLOCK, pctx))
1513 fix_problem(ctx, PR_1_EA_ALLOC_REGION_ABORT, pctx);
1518 if (fix_problem(ctx, PR_1_EA_ALLOC_COLLISION, pctx))
1529 if (fix_problem(ctx, PR_1_EA_ALLOC_COLLISION, pctx))
1537 if (fix_problem(ctx, PR_1_EA_BAD_NAME, pctx))
1542 if (fix_problem(ctx, PR_1_EA_BAD_VALUE, pctx))
1546 if (fix_problem(ctx, PR_1_EA_BAD_VALUE, pctx))
1553 if (fix_problem(ctx, PR_1_EA_ALLOC_COLLISION, pctx))
1561 pctx->num = entry->e_hash;
1562 if (fix_problem(ctx, PR_1_ATTR_HASH, pctx))
1570 if (fix_problem(ctx, PR_1_EA_ALLOC_COLLISION, pctx))
1591 static int handle_htree(e2fsck_t ctx, struct problem_context *pctx,
1601 fix_problem(ctx, PR_1_HTREE_NODIR, pctx)) ||
1603 fix_problem(ctx, PR_1_HTREE_SET, pctx)))
1606 pctx->errcode = ext2fs_bmap(fs, ino, inode, 0, 0, 0, &blk);
1608 if ((pctx->errcode) ||
1612 if (fix_problem(ctx, PR_1_HTREE_BADROOT, pctx))
1619 if (retval && fix_problem(ctx, PR_1_HTREE_BADROOT, pctx))
1626 fix_problem(ctx, PR_1_HTREE_BADROOT, pctx))
1629 pctx->num = root->hash_version;
1633 fix_problem(ctx, PR_1_HTREE_HASHV, pctx))
1637 fix_problem(ctx, PR_1_HTREE_INCOMPAT, pctx))
1640 pctx->num = root->indirect_levels;
1642 fix_problem(ctx, PR_1_HTREE_DEPTH, pctx))
1673 static void scan_extent_node(e2fsck_t ctx, struct problem_context *pctx,
1686 pctx->errcode = ext2fs_extent_get_info(ehandle, &info);
1687 if (pctx->errcode)
1690 pctx->errcode = ext2fs_extent_get(ehandle, EXT2_EXTENT_FIRST_SIB,
1692 while (!pctx->errcode && info.num_entries-- > 0) {
1694 is_dir = LINUX_S_ISDIR(pctx->inode->i_mode);
1710 pctx->blk = extent.e_pblk;
1711 pctx->blk2 = extent.e_lblk;
1712 pctx->num = extent.e_len;
1713 if (fix_problem(ctx, problem, pctx)) {
1715 pctx->errcode =
1717 if (pctx->errcode) {
1718 pctx->str = "ext2fs_extent_delete";
1721 pctx->errcode = ext2fs_extent_get(ehandle,
1724 if (pctx->errcode == EXT2_ET_NO_CURRENT_NODE) {
1725 pctx->errcode = 0;
1735 pctx->errcode = ext2fs_extent_get(ehandle,
1737 if (pctx->errcode) {
1738 pctx->str = "EXT2_EXTENT_DOWN";
1740 if (pctx->errcode == EXT2_ET_EXTENT_HEADER_BAD)
1744 scan_extent_node(ctx, pctx, pb, extent.e_lblk, ehandle);
1745 if (pctx->errcode)
1747 pctx->errcode = ext2fs_extent_get(ehandle,
1749 if (pctx->errcode) {
1750 pctx->str = "EXT2_EXTENT_UP";
1771 (unsigned long) pctx->ino, type,
1780 pctx->errcode = ext2fs_add_dir_block(ctx->fs->dblist,
1783 if (pctx->errcode) {
1784 pctx->blk = 0;
1785 pctx->num = pb->last_db_block;
1795 pctx->errcode = ext2fs_add_dir_block(ctx->fs->dblist, pctx->ino, blk, blockcnt);
1796 if (pctx->errcode) {
1797 pctx->blk = blk;
1798 pctx->num = blockcnt;
1800 fix_problem(ctx, PR_1_ADD_DBLOCK, pctx);
1813 pctx->errcode = ext2fs_extent_get(ehandle,
1817 if (pctx->errcode == EXT2_ET_EXTENT_NO_NEXT)
1818 pctx->errcode = 0;
1821 static void check_blocks_extents(e2fsck_t ctx, struct problem_context *pctx,
1825 struct ext2_inode *inode = pctx->inode;
1828 ext2_ino_t ino = pctx->ino;
1831 pctx->errcode = ext2fs_extent_open2(fs, ino, inode, &ehandle);
1832 if (pctx->errcode) {
1833 if (fix_problem(ctx, PR_1_READ_EXTENT, pctx))
1836 pctx->errcode = 0;
1847 scan_extent_node(ctx, pctx, pb, 0, ehandle);
1848 if (pctx->errcode &&
1849 fix_problem(ctx, PR_1_EXTENT_ITERATE_FAILURE, pctx)) {
1854 pctx->errcode = 0;
1872 static void check_blocks(e2fsck_t ctx, struct problem_context *pctx,
1877 ext2_ino_t ino = pctx->ino;
1878 struct ext2_inode *inode = pctx->inode;
1897 pb.pctx = pctx;
1899 pctx->ino = ino;
1900 pctx->errcode = 0;
1910 if (fix_problem(ctx, PR_1_COMPR_SET, pctx)) {
1917 if (inode->i_file_acl && check_ext_attr(ctx, pctx, block_buf)) {
1925 check_blocks_extents(ctx, pctx, &pb);
1927 pctx->errcode = ext2fs_block_iterate2(fs, ino,
1935 if (pctx->errcode)
1936 fix_problem(ctx, PR_1_BLOCK_ITERATE, pctx);
1952 if (handle_htree(ctx, pctx, ino, inode, block_buf)) {
1963 if (fix_problem(ctx, PR_1_ZERO_LENGTH_DIR, pctx)) {
2017 pctx->blkcount = pb.last_block;
2018 if (fix_problem(ctx, PR_1_EOFBLOCKS_FL_SET, pctx)) {
2026 pctx->num = (pb.last_block+1) * fs->blocksize;
2027 pctx->group = bad_size;
2028 if (fix_problem(ctx, PR_1_BAD_I_SIZE, pctx)) {
2029 inode->i_size = pctx->num;
2031 inode->i_size_high = pctx->num >> 32;
2034 pctx->num = 0;
2044 pctx->num = pb.num_blocks;
2045 if (fix_problem(ctx, PR_1_BAD_I_BLOCKS, pctx)) {
2050 pctx->num = 0;
2126 struct problem_context *pctx;
2133 pctx = p->pctx;
2183 (unsigned long) pctx->ino, type,
2207 if (fix_problem(ctx, PR_1_TOO_MANY_BAD_BLOCKS, pctx)) {
2211 if (fix_problem(ctx, PR_1_SUPPRESS_MESSAGES, pctx)) {
2217 pctx->blk = blk;
2218 pctx->blkcount = blockcnt;
2219 if (fix_problem(ctx, problem, pctx)) {
2245 pctx->errcode = ext2fs_add_dir_block(fs->dblist,
2248 if (pctx->errcode) {
2249 pctx->blk = 0;
2250 pctx->num = p->last_db_block;
2254 pctx->errcode = ext2fs_add_dir_block(fs->dblist, p->ino,
2256 if (pctx->errcode) {
2257 pctx->blk = blk;
2258 pctx->num = blockcnt;
2260 fix_problem(ctx, PR_1_ADD_DBLOCK, pctx);
2280 struct problem_context *pctx;
2293 pctx = p->pctx;
2295 pctx->ino = EXT2_BAD_INO;
2296 pctx->blk = blk;
2297 pctx->blkcount = blockcnt;
2301 if (fix_problem(ctx, PR_1_BB_ILLEGAL_BLOCK_NUM, pctx)) {
2311 if (fix_problem(ctx, PR_1_BB_FS_BLOCK, pctx)) {
2319 pctx)) {
2349 pctx->group = i;
2350 pctx->blk = blk;
2357 pctx)) {
2363 fix_problem(ctx, PR_1_BAD_SUPERBLOCK, pctx);
2369 pctx->blk = *block_nr;
2371 PR_1_BAD_PRIMARY_GROUP_DESCRIPTOR, pctx)) {
2377 fix_problem(ctx, PR_1_BAD_GROUP_DESCRIPTORS, pctx);
2382 if (fix_problem(ctx, PR_1_BB_BAD_BLOCK, pctx)) {
2389 if (fix_problem(ctx, PR_1_IB_BAD_BLOCK, pctx)) {
2416 if (fix_problem(ctx, PR_1_BBINODE_BAD_METABLOCK, pctx)) {
2425 pctx->group = -1;
2428 fix_problem(ctx, PR_1_PROGERR_CLAIMED_BLOCK, pctx);
2442 struct problem_context pctx;
2444 clear_problem_context(&pctx);
2446 pctx.group = group;
2447 pctx.blk = old_block;
2448 pctx.str = name;
2468 pctx.errcode = ext2fs_get_free_blocks(fs, first_block, last_block,
2471 if (is_flexbg && (pctx.errcode == EXT2_ET_BLOCK_ALLOC_FAIL))
2472 pctx.errcode = ext2fs_get_free_blocks(fs,
2476 if (pctx.errcode) {
2477 pctx.num = num;
2478 fix_problem(ctx, PR_1_RELOC_BLOCK_ALLOCATE, &pctx);
2483 pctx.errcode = ext2fs_get_mem(fs->blocksize, &buf);
2484 if (pctx.errcode) {
2485 fix_problem(ctx, PR_1_RELOC_MEMORY_ALLOCATE, &pctx);
2492 pctx.blk2 = *new_block;
2494 PR_1_RELOC_TO), &pctx);
2495 pctx.blk2 = 0;
2497 pctx.blk = i;
2500 pctx.errcode = io_channel_read_blk(fs->io,
2502 if (pctx.errcode)
2503 fix_problem(ctx, PR_1_RELOC_READ_ERR, &pctx);
2507 pctx.blk = (*new_block) + i;
2508 pctx.errcode = io_channel_write_blk(fs->io, pctx.blk,
2510 if (pctx.errcode)
2511 fix_problem(ctx, PR_1_RELOC_WRITE_ERR, &pctx);
2560 struct problem_context pctx;
2562 clear_problem_context(&pctx);
2565 pctx.group = i;
2578 pctx.blk = b;
2581 PR_1_ITABLE_CONFLICT, &pctx)) {
2598 pctx.blk = fs->group_desc[i].bg_block_bitmap;
2599 if (fix_problem(ctx, PR_1_BB_CONFLICT, &pctx)) {
2615 pctx.blk = fs->group_desc[i].bg_inode_bitmap;
2616 if (fix_problem(ctx, PR_1_IB_CONFLICT, &pctx)) {