Home | History | Annotate | Download | only in e2fsck

Lines Matching refs:pctx

64 static void check_blocks(e2fsck_t ctx, struct problem_context *pctx,
89 struct problem_context *pctx;
213 static void check_immutable(e2fsck_t ctx, struct problem_context *pctx)
215 if (!(pctx->inode->i_flags & BAD_SPECIAL_FLAGS))
218 if (!fix_problem(ctx, PR_1_SET_IMMUTABLE, pctx))
221 pctx->inode->i_flags &= ~BAD_SPECIAL_FLAGS;
222 e2fsck_write_inode(ctx, pctx->ino, pctx->inode, "pass1");
229 static void check_size(e2fsck_t ctx, struct problem_context *pctx)
231 struct ext2_inode *inode = pctx->inode;
236 if (!fix_problem(ctx, PR_1_SET_NONZSIZE, pctx))
241 e2fsck_write_inode(ctx, pctx->ino, pctx->inode, "pass1");
244 static void check_ea_in_inode(e2fsck_t ctx, struct problem_context *pctx)
253 inode = (struct ext2_inode_large *) pctx->inode;
273 pctx->num = entry->e_name_len;
283 pctx->num = entry->e_value_size;
290 pctx->num = entry->e_value_block;
297 pctx->num = entry->e_hash;
314 if (problem == 0 || !fix_problem(ctx, problem, pctx))
319 e2fsck_write_inode_full(ctx, pctx->ino, (struct ext2_inode *) inode,
323 static void check_inode_extra_space(e2fsck_t ctx, struct problem_context *pctx)
330 inode = (struct ext2_inode_large *) pctx->inode;
337 printf("inode #%u, i_extra_size %d\n", pctx->ino,
349 if (!fix_problem(ctx, PR_1_EXTRA_ISIZE, pctx))
352 e2fsck_write_inode_full(ctx, pctx->ino, pctx->inode,
361 check_ea_in_inode(ctx, pctx);
373 static void check_is_really_dir(e2fsck_t ctx, struct problem_context *pctx,
376 struct ext2_inode *inode = pctx->inode;
413 (dirent->inode != pctx->ino) ||
427 if (fix_problem(ctx, PR_1_TREAT_AS_DIRECTORY, pctx)) {
429 e2fsck_write_inode_full(ctx, pctx->ino, inode,
479 struct problem_context pctx;
490 clear_problem_context(&pctx);
493 fix_problem(ctx, PR_1_PASS_HEADER, &pctx);
521 pctx.errcode = ext2fs_allocate_inode_bitmap(fs, _("in-use inode map"),
523 if (pctx.errcode) {
524 pctx.num = 1;
525 fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR, &pctx);
529 pctx.errcode = ext2fs_allocate_inode_bitmap(fs,
531 if (pctx.errcode) {
532 pctx.num = 2;
533 fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR, &pctx);
537 pctx.errcode = ext2fs_allocate_inode_bitmap(fs,
539 if (pctx.errcode) {
540 pctx.num = 6;
541 fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR, &pctx);
545 pctx.errcode = ext2fs_allocate_block_bitmap(fs, _("in-use block map"),
547 if (pctx.errcode) {
548 pctx.num = 1;
549 fix_problem(ctx, PR_1_ALLOCATE_BBITMAP_ERROR, &pctx);
555 pctx.errcode = ext2fs_create_icount2(fs, 0, 0, 0,
557 if (pctx.errcode) {
558 fix_problem(ctx, PR_1_ALLOCATE_ICOUNT, &pctx);
573 pctx.errcode = ext2fs_init_dblist(fs, 0);
574 if (pctx.errcode) {
575 pctx);
600 pctx.errcode = ext2fs_open_inode_scan(fs, ctx->inode_buffer_blocks,
603 if (pctx.errcode) {
604 fix_problem(ctx, PR_1_ISCAN_ERROR, &pctx);
624 pctx.errcode = ext2fs_get_next_inode_full(scan, &ino,
629 if (pctx.errcode == EXT2_ET_BAD_BLOCK_IN_INODE_TABLE) {
636 if (pctx.errcode) {
637 fix_problem(ctx, PR_1_ISCAN_ERROR, &pctx);
643 pctx.ino = ino;
644 pctx.inode = inode;
647 pctx.errcode = ext2fs_icount_store(ctx->inode_link_info,
649 if (pctx.errcode) {
650 pctx.num = inode->i_links_count;
651 fix_problem(ctx, PR_1_ICOUNT_STORE, &pctx);
659 pctx.errcode = ext2fs_copy_bitmap(ctx->block_found_map,
661 if (pctx.errcode) {
662 pctx.num = 4;
663 fix_problem(ctx, PR_1_ALLOCATE_BBITMAP_ERROR, &pctx);
673 pb.pctx = &pctx;
675 pctx.errcode = ext2fs_block_iterate2(fs, ino, 0,
678 if (pctx.errcode) {
679 fix_problem(ctx, PR_1_BLOCK_ITERATE, &pctx);
684 if (!fix_problem(ctx, PR_1_BBINODE_BAD_METABLOCK_PROMPT, &pctx)) {
689 clear_problem_context(&pctx);
698 if (fix_problem(ctx, PR_1_ROOT_NO_DIR, &pctx)) {
718 if (fix_problem(ctx, PR_1_ROOT_DTIME, &pctx)) {
729 &pctx)) {
734 check_blocks(ctx, &pctx, block_buf);
740 &pctx)) {
763 if (fix_problem(ctx, problem, &pctx)) {
769 check_blocks(ctx, &pctx, block_buf);
791 if (fix_problem(ctx, PR_1_LOW_DTIME, &pctx)) {
806 PR_1_ZERO_DTIME, &pctx)) {
825 if (fix_problem(ctx, PR_1_SET_DTIME, &pctx)) {
860 if (fix_problem(ctx, PR_1_SET_IMAGIC, &pctx)) {
868 check_inode_extra_space(ctx, &pctx);
869 check_is_really_dir(ctx, &pctx, block_buf);
880 check_immutable(ctx, &pctx);
881 check_size(ctx, &pctx);
885 check_immutable(ctx, &pctx);
886 check_size(ctx, &pctx);
890 check_immutable(ctx, &pctx);
894 check_blocks(ctx, &pctx, block_buf);
900 check_immutable(ctx, &pctx);
901 check_size(ctx, &pctx);
905 check_immutable(ctx, &pctx);
906 check_size(ctx, &pctx);
924 check_blocks(ctx, &pctx, block_buf);
970 clear_problem_context(&pctx);
971 pctx.errcode = ext2fs_create_resize_inode(fs);
972 if (pctx.errcode) {
973 fix_problem(ctx, PR_1_RESIZE_INODE_CREATE, &pctx);
1001 clear_problem_context(&pctx);
1002 fix_problem(ctx, PR_1_DUP_BLOCKS_PREENSTOP, &pctx);
1055 struct problem_context pctx;
1067 clear_problem_context(&pctx);
1069 pctx.inode = ctx->stashed_inode = &inodes_to_process[i].inode;
1070 pctx.ino = ctx->stashed_ino = inodes_to_process[i].ino;
1073 printf("%u ", pctx.ino);
1076 pctx.ino);
1078 check_blocks(ctx, &pctx, block_buf);
1111 struct problem_context pctx;
1114 clear_problem_context(&pctx);
1116 pctx.errcode = ext2fs_allocate_inode_bitmap(ctx->fs,
1118 if (pctx.errcode) {
1119 pctx.num = 3;
1120 fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR, &pctx);
1135 struct problem_context pctx;
1137 clear_problem_context(&pctx);
1138 pctx.errcode = ext2fs_allocate_inode_bitmap(ctx->fs,
1141 if (pctx.errcode) {
1142 pctx.num = 4;
1143 fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR, &pctx);
1155 struct problem_context pctx;
1157 clear_problem_context(&pctx);
1158 pctx.errcode = ext2fs_allocate_inode_bitmap(ctx->fs,
1161 if (pctx.errcode) {
1162 pctx.num = 5;
1163 fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR, &pctx);
1179 struct problem_context pctx;
1181 clear_problem_context(&pctx);
1185 pctx.errcode = ext2fs_allocate_block_bitmap(ctx->fs,
1188 if (pctx.errcode) {
1189 pctx.num = 3;
1191 &pctx);
1214 struct problem_context pctx;
1220 clear_problem_context(&pctx);
1226 pctx.blk = blk;
1227 pctx.errcode = ext2fs_read_ext_attr(fs, blk, block_buf);
1228 if (pctx.errcode) {
1229 fix_problem(ctx, PR_1_EXTATTR_READ_ABORT, &pctx);
1233 pctx.blkcount = header->h_refcount;
1235 pctx.num = should_be;
1236 if (fix_problem(ctx, PR_1_EXTATTR_REFCOUNT, &pctx)) {
1238 pctx.errcode = ext2fs_write_ext_attr(fs, blk,
1240 if (pctx.errcode) {
1241 fix_problem(ctx, PR_1_EXTATTR_WRITE, &pctx);
1251 static int check_ext_attr(e2fsck_t ctx, struct problem_context *pctx,
1255 ext2_ino_t ino = pctx->ino;
1256 struct ext2_inode *inode = pctx->inode;
1284 pctx->errcode = ext2fs_allocate_block_bitmap(fs,
1287 if (pctx->errcode) {
1288 pctx->num = 2;
1289 fix_problem(ctx, PR_1_ALLOCATE_BBITMAP_ERROR, pctx);
1297 pctx->errcode = ea_refcount_create(0, &ctx->refcount);
1298 if (pctx->errcode) {
1299 pctx->num = 1;
1300 fix_problem(ctx, PR_1_ALLOCATE_REFCOUNT, pctx);
1317 pctx->errcode = ea_refcount_create(0,
1319 if (pctx->errcode) {
1320 pctx->num = 2;
1321 fix_problem(ctx, PR_1_ALLOCATE_REFCOUNT, pctx);
1334 pctx->blk = blk;
1335 pctx->errcode = ext2fs_read_ext_attr(fs, blk, block_buf);
1336 if (pctx->errcode && fix_problem(ctx, PR_1_READ_EA_BLOCK, pctx))
1339 pctx->blk = inode->i_file_acl;
1344 if (fix_problem(ctx, PR_1_BAD_EA_BLOCK, pctx))
1349 if (fix_problem(ctx, PR_1_EA_MULTI_BLOCK, pctx))
1355 fix_problem(ctx, PR_1_EA_ALLOC_REGION, pctx);
1360 if (fix_problem(ctx, PR_1_EA_ALLOC_COLLISION, pctx))
1369 if (fix_problem(ctx, PR_1_EA_ALLOC_COLLISION, pctx))
1376 if (fix_problem(ctx, PR_1_EA_BAD_NAME, pctx))
1380 if (fix_problem(ctx, PR_1_EA_BAD_VALUE, pctx))
1384 if (fix_problem(ctx, PR_1_EA_BAD_VALUE, pctx))
1391 if (fix_problem(ctx, PR_1_EA_ALLOC_COLLISION, pctx))
1397 if (fix_problem(ctx, PR_1_EA_ALLOC_COLLISION, pctx))
1418 static int handle_htree(e2fsck_t ctx, struct problem_context *pctx,
1429 fix_problem(ctx, PR_1_HTREE_NODIR, pctx)) ||
1431 fix_problem(ctx, PR_1_HTREE_SET, pctx)))
1438 fix_problem(ctx, PR_1_HTREE_BADROOT, pctx))
1442 if (retval && fix_problem(ctx, PR_1_HTREE_BADROOT, pctx))
1449 fix_problem(ctx, PR_1_HTREE_BADROOT, pctx))
1452 pctx->num = root->hash_version;
1456 fix_problem(ctx, PR_1_HTREE_HASHV, pctx))
1460 fix_problem(ctx, PR_1_HTREE_INCOMPAT, pctx))
1463 pctx->num = root->indirect_levels;
1465 fix_problem(ctx, PR_1_HTREE_DEPTH, pctx))
1475 static void check_blocks(e2fsck_t ctx, struct problem_context *pctx,
1480 ext2_ino_t ino = pctx->ino;
1481 struct ext2_inode *inode = pctx->inode;
1498 pb.pctx = pctx;
1500 pctx->ino = ino;
1501 pctx->errcode = 0;
1508 if (fix_problem(ctx, PR_1_COMPR_SET, pctx)) {
1515 if (inode->i_file_acl && check_ext_attr(ctx, pctx, block_buf))
1519 pctx->errcode = ext2fs_block_iterate2(fs, ino,
1526 if (pctx->errcode)
1527 fix_problem(ctx, PR_1_BLOCK_ITERATE, pctx);
1570 if (handle_htree(ctx, pctx, ino, inode, block_buf)) {
1585 if (fix_problem(ctx, PR_1_ZERO_LENGTH_DIR, pctx)) {
1630 pctx->num = (pb.last_block+1) * fs->blocksize;
1631 if (fix_problem(ctx, PR_1_BAD_I_SIZE, pctx)) {
1632 inode->i_size = pctx->num;
1634 inode->i_size_high = pctx->num >> 32;
1637 pctx->num = 0;
1643 pctx->num = pb.num_blocks;
1644 if (fix_problem(ctx, PR_1_BAD_I_BLOCKS, pctx)) {
1648 pctx->num = 0;
1718 struct problem_context *pctx;
1725 pctx = p->pctx;
1806 if (fix_problem(ctx, PR_1_TOO_MANY_BAD_BLOCKS, pctx)) {
1810 if (fix_problem(ctx, PR_1_SUPPRESS_MESSAGES, pctx)) {
1816 pctx->blk = blk;
1817 pctx->blkcount = blockcnt;
1818 if (fix_problem(ctx, problem, pctx)) {
1843 pctx->errcode = ext2fs_add_dir_block(fs->dblist, p->ino,
1845 if (pctx->errcode) {
1846 pctx->blk = blk;
1847 pctx->num = blockcnt;
1848 fix_problem(ctx, PR_1_ADD_DBLOCK, pctx);
1868 struct problem_context *pctx;
1881 pctx = p->pctx;
1883 pctx->ino = EXT2_BAD_INO;
1884 pctx->blk = blk;
1885 pctx->blkcount = blockcnt;
1889 if (fix_problem(ctx, PR_1_BB_ILLEGAL_BLOCK_NUM, pctx)) {
1899 if (fix_problem(ctx, PR_1_BB_FS_BLOCK, pctx)) {
1907 pctx)) {
1937 pctx->group = i;
1938 pctx->blk = blk;
1945 pctx)) {
1951 fix_problem(ctx, PR_1_BAD_SUPERBLOCK, pctx);
1957 pctx->blk = *block_nr;
1959 PR_1_BAD_PRIMARY_GROUP_DESCRIPTOR, pctx)) {
1965 fix_problem(ctx, PR_1_BAD_GROUP_DESCRIPTORS, pctx);
1970 if (fix_problem(ctx, PR_1_BB_BAD_BLOCK, pctx)) {
1977 if (fix_problem(ctx, PR_1_IB_BAD_BLOCK, pctx)) {
2004 if (fix_problem(ctx, PR_1_BBINODE_BAD_METABLOCK, pctx)) {
2013 pctx->group = -1;
2016 fix_problem(ctx, PR_1_PROGERR_CLAIMED_BLOCK, pctx);
2029 struct problem_context pctx;
2031 clear_problem_context(&pctx);
2033 pctx.group = group;
2034 pctx.blk = old_block;
2035 pctx.str = name;
2038 pctx.errcode = ext2fs_get_free_blocks(fs, first_block, last_block,
2040 if (pctx.errcode) {
2041 pctx.num = num;
2042 fix_problem(ctx, PR_1_RELOC_BLOCK_ALLOCATE, &pctx);
2046 pctx.errcode = ext2fs_get_mem(fs->blocksize, &buf);
2047 if (pctx.errcode) {
2048 fix_problem(ctx, PR_1_RELOC_MEMORY_ALLOCATE, &pctx);
2054 pctx.blk2 = *new_block;
2056 PR_1_RELOC_TO), &pctx);
2057 pctx.blk2 = 0;
2059 pctx.blk = i;
2062 pctx.errcode = io_channel_read_blk(fs->io,
2064 if (pctx.errcode)
2065 fix_problem(ctx, PR_1_RELOC_READ_ERR, &pctx);
2069 pctx.blk = (*new_block) + i;
2070 pctx.errcode = io_channel_write_blk(fs->io, pctx.blk,
2072 if (pctx.errcode)
2073 fix_problem(ctx, PR_1_RELOC_WRITE_ERR, &pctx);
2122 struct problem_context pctx;
2124 clear_problem_context(&pctx);
2127 pctx.group = i;
2140 pctx.blk = b;
2142 PR_1_ITABLE_CONFLICT, &pctx)) {
2159 pctx.blk = fs->group_desc[i].bg_block_bitmap;
2160 if (fix_problem(ctx, PR_1_BB_CONFLICT, &pctx)) {
2176 pctx.blk = fs->group_desc[i].bg_inode_bitmap;
2177 if (fix_problem(ctx, PR_1_IB_CONFLICT, &pctx)) {