Home | History | Annotate | Download | only in genext2fs

Lines Matching refs:nod

251 #define GRP_GROUP_OF_INODE(fs,nod) ( ((nod)-1) / (fs)->sb.s_inodes_per_group)
254 #define GRP_GET_INODE_BITMAP(fs,nod) \
255 ( GRP_GET_GROUP_IBM((fs),GRP_GROUP_OF_INODE((fs),(nod))) )
258 #define GRP_IBM_OFFSET(fs,nod) \
259 ( (nod) - GRP_GROUP_OF_INODE((fs),(nod))*(fs)->sb.s_inodes_per_group )
639 swap_nod(inode *nod)
641 #define this nod
828 get_nod(filesystem *fs, uint32 nod)
833 offset = GRP_IBM_OFFSET(fs,nod);
834 grp = GRP_GROUP_OF_INODE(fs,nod);
874 alloc_blk(filesystem *fs, uint32 nod)
879 grp = GRP_GROUP_OF_INODE(fs,nod);
912 uint32 nod,best_group=0;
931 if (!(nod = allocate(get_blk(fs,fs->gd[best_group].bg_inode_bitmap),0)))
937 return fs->sb.s_inodes_per_group*best_group+nod;
973 walk_bw(filesystem *fs, uint32 nod, blockwalker *bw, int32 *create, uint32 hole)
980 if(bw->bnum >= get_nod(fs, nod)->i_blocks / INOBLK)
993 bkref = &get_nod(fs, nod)->i_block[bw->bpdir = 0];
995 *bkref = hole ? 0 : alloc_blk(fs,nod);
1002 bkref = &get_nod(fs, nod)->i_block[++bw->bpdir];
1004 *bkref = hole ? 0 : alloc_blk(fs,nod);
1015 get_nod(fs, nod)->i_block[bw->bpdir] = alloc_blk(fs,nod);
1017 free_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]);
1018 b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]);
1021 *bkref = hole ? 0 : alloc_blk(fs,nod);
1029 b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]);
1032 *bkref = hole ? 0 : alloc_blk(fs,nod);
1044 get_nod(fs, nod)->i_block[bw->bpdir] = alloc_blk(fs,nod);
1046 free_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]);
1047 b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]);
1049 b[bw->bpind] = alloc_blk(fs,nod);
1055 *bkref = hole ? 0 : alloc_blk(fs,nod);
1063 b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]);
1067 *bkref = hole ? 0 : alloc_blk(fs,nod);
1077 b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]);
1079 b[bw->bpind] = alloc_blk(fs,nod);
1085 *bkref = hole ? 0 : alloc_blk(fs,nod);
1102 get_nod(fs, nod)->i_block[bw->bpdir] = alloc_blk(fs,nod);
1104 free_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]);
1105 b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]);
1107 b[bw->bpind] = alloc_blk(fs,nod);
1112 b[bw->bpdind] = alloc_blk(fs,nod);
1118 *bkref = hole ? 0 : alloc_blk(fs,nod);
1129 b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]);
1134 *bkref = hole ? 0 : alloc_blk(fs,nod);
1148 b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]);
1151 b[bw->bpdind] = alloc_blk(fs,nod);
1157 *bkref = hole ? 0 : alloc_blk(fs,nod);
1171 b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]);
1173 b[bw->bpind] = alloc_blk(fs,nod);
1178 b[bw->bpdind] = alloc_blk(fs,nod);
1184 *bkref = hole ? 0 : alloc_blk(fs,nod);
1196 error_msg_and_die("[block %d of inode %d is unallocated !]", *bkref, nod);
1199 get_nod(fs, nod)->i_blocks = bw->bnum * INOBLK;
1205 extend_blk(filesystem *fs, uint32 nod, block b, int amount)
1214 for(i = 0; i < get_nod(fs, nod)->i_blocks / INOBLK + amount; i++)
1215 walk_bw(fs, nod, &bw, 0, 0);
1216 while(walk_bw(fs, nod, &bw, &create, 0) != WALK_END)
1218 get_nod(fs, nod)->i_blocks += amount * INOBLK;
1223 while((bk = walk_bw(fs, nod, &bw, 0, 0)) != WALK_END)
1238 if((bk = walk_bw(fs, nod, &bw, &create, !copyb)) == WALK_END)
1248 add2dir(filesystem *fs, uint32 dnod, uint32 nod, const char* name)
1279 d->d_inode = nod;
1280 node = get_nod(fs, nod);
1294 d->d_inode = nod;
1295 node = get_nod(fs, nod);
1307 d->d_inode = nod;
1308 node = get_nod(fs, nod);
1320 find_dir(filesystem *fs, uint32 nod, const char * name)
1326 while((bk = walk_bw(fs, nod, &bw, 0, 0)) != WALK_END)
1340 find_path(filesystem *fs, uint32 nod, const char * name)
1346 nod = EXT2_ROOT_INO;
1353 if(!(nod = find_dir(fs, nod, n)))
1361 return nod;
1366 chmod_fs(filesystem *fs, uint32 nod, uint16 mode, uint16 uid, uint16 gid)
1369 node = get_nod(fs, nod);
1379 uint32 nod;
1382 nod = alloc_nod(fs);
1383 node = get_nod(fs, nod);
1385 add2dir(fs, parent_nod, nod, name);
1393 ((uint8*)get_nod(fs, nod)->i_block)[0] = minor;
1394 ((uint8*)get_nod(fs, nod)->i_block)[1] = major;
1397 add2dir(fs, nod, nod, ".");
1398 add2dir(fs, nod, parent_nod, "..");
1399 fs->gd[GRP_GROUP_OF_INODE(fs,nod)].bg_used_dirs_count++;
1408 return nod;
1423 uint32 nod = mknod_fs(fs, parent_nod, name, FM_IFLNK | FM_IRWXU | FM_IRWXG | FM_IRWXO, uid, gid, 0, 0, ctime, mtime);
1424 extend_blk(fs, nod, 0, - (int)get_nod(fs, nod)->i_blocks / INOBLK);
1425 get_nod(fs, nod)->i_size = size;
1428 strncpy((char*)get_nod(fs, nod)->i_block, (char*)b, size);
1429 return nod;
1431 extend_blk(fs, nod, b, rndup(size, BLOCKSIZE) / BLOCKSIZE);
1432 return nod;
1440 uint32 nod = mknod_fs(fs, parent_nod, name, mode|FM_IFREG, uid, gid, 0, 0, ctime, mtime);
1441 extend_blk(fs, nod, 0, - (int)get_nod(fs, nod)->i_blocks / INOBLK);
1442 get_nod(fs, nod)->i_size = size;
1448 extend_blk(fs, nod, b, rndup(size, BLOCKSIZE) / BLOCKSIZE);
1451 return nod;
1511 uint32 nod, ctime, mtime;
1555 if(!(nod = find_path(fs, this_nod, dir)))
1562 nod = 0;
1604 oldnod = find_dir(fs, nod, dname);
1608 mknod_fs(fs, nod, dname, mode, uid, gid, major, minor + (i * increment - start), ctime, mtime);
1614 uint32 oldnod = find_dir(fs, nod, name);
1618 mknod_fs(fs, nod, name, mode, uid, gid, major, minor, ctime, mtime);
1656 uint32 nod;
1719 if((nod = find_dir(fs, this_nod, name)))
1725 add2fs_from_dir(fs, full_name, nod, squash_uids, squash_perms, fixstats, fs_timestamp, stats);
1745 nod = mknod_fs(fs, this_nod, name, mode|FM_IFCHR, uid, gid, major(st.st_rdev), minor(st.st_rdev), ctime, mtime);
1748 nod = mknod_fs(fs, this_nod, name, mode|FM_IFBLK, uid, gid, major(st.st_rdev), minor(st.st_rdev), ctime, mtime);
1752 nod = mknod_fs(fs, this_nod, name, mode|FM_IFIFO, uid, gid, 0, 0, ctime, mtime);
1755 nod = mknod_fs(fs, this_nod, name, mode|FM_IFSOCK, uid, gid, 0, 0, ctime, mtime);
1764 nod = mkfile_fs(fs, this_nod, name, mode, st.st_size, fh, uid, gid, ctime, mtime);
1768 nod = mkdir_fs(fs, this_nod, name, mode, uid, gid, ctime, mtime);
1771 add2fs_from_dir(fs, full_name, nod, squash_uids, squash_perms, fixstats, fs_timestamp, stats);
1787 hdlinks.hdl[hdlinks.count].dst_nod = nod;
1797 swap_goodblocks(filesystem *fs, inode *nod)
1803 uint32 nblk = nod->i_blocks / INOBLK;
1804 if((nod->i_size && !nblk) || ((nod->i_mode & FM_IFBLK) == FM_IFBLK) || ((nod->i_mode & FM_IFCHR) == FM_IFCHR))
1806 nod->i_block[i] = swab32(nod->i_block[i]);
1809 swap_block(get_blk(fs, nod->i_block[EXT2_IND_BLOCK]));
1825 assert(nod->i_block[EXT2_DIND_BLOCK] != 0);
1828 swap_block(get_blk(fs, ((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i]));
1829 swap_block(get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]));
1833 b = (uint32*)get_blk(fs,nod->i_block[EXT2_TIND_BLOCK]);
1854 swap_badblocks(filesystem *fs, inode *nod)
1860 uint32 nblk = nod->i_blocks / INOBLK;
1861 if((nod->i_size && !nblk) || ((nod->i_mode & FM_IFBLK) == FM_IFBLK) || ((nod->i_mode & FM_IFCHR) == FM_IFCHR))
1863 nod->i_block[i] = swab32(nod->i_block[i]);
1866 swap_block(get_blk(fs, nod->i_block[EXT2_IND_BLOCK]));
1870 assert(nod->i_block[EXT2_DIND_BLOCK] != 0);
1871 swap_block(get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]));
1874 swap_block(get_blk(fs, ((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i]));
1878 b = (uint32*)get_blk(fs,nod->i_block[EXT2_TIND_BLOCK]);
1905 inode *nod = get_nod(fs, i);
1906 if(nod->i_mode & FM_IFDIR)
1920 swap_goodblocks(fs, nod);
1921 swap_nod(nod);
1937 inode *nod = get_nod(fs, i);
1938 swap_nod(nod);
1939 swap_badblocks(fs, nod);
1940 if(nod->i_mode & FM_IFDIR)
1965 uint32 nod, first_block;
2103 nod = mkdir_fs(fs, EXT2_ROOT_INO, "lost+found", FM_IRWXU, 0, 0, fs_timestamp, fs_timestamp);
2112 extend_blk(fs, nod, b, 1);
2113 get_nod(fs, nod)->i_size = fs->sb.s_r_blocks_count * BLOCKSIZE;
2159 flist_blocks(filesystem *fs, uint32 nod, FILE *fh)
2164 while((bk = walk_bw(fs, nod, &bw, 0, 0)) != WALK_END)
2171 list_blocks(filesystem *fs, uint32 nod)
2177 printf("blocks in inode %d:", nod);
2178 while((bk = walk_bw(fs, nod, &bw, 0, 0)) != WALK_END)
2185 write_blocks(filesystem *fs, uint32 nod, FILE* f)
2189 int32 fsize = get_nod(fs, nod)->i_size;
2191 while((bk = walk_bw(fs, nod, &bw, 0, 0)) != WALK_END)
2194 error_msg_and_die("wrong size while saving inode %d", nod);
2196 error_msg_and_die("error while saving inode %d", nod);
2204 print_dev(filesystem *fs, uint32 nod)
2207 minor = ((uint8*)get_nod(fs, nod)->i_block)[0];
2208 major = ((uint8*)get_nod(fs, nod)->i_block)[1];
2214 print_dir(filesystem *fs, uint32 nod)
2219 printf("directory for inode %d:\n", nod);
2220 while((bk = walk_bw(fs, nod, &bw, 0, 0)) != WALK_END)
2239 print_link(filesystem *fs, uint32 nod)
2241 if(!get_nod(fs, nod)->i_blocks)
2242 printf("links to '%s'\n", (char*)get_nod(fs, nod)->i_block);
2246 write_blocks(fs, nod, stdout);
2313 print_inode(filesystem *fs, uint32 nod)
2317 if(!get_nod(fs, nod)->i_mode)
2319 switch(nod)
2338 s = (nod >= EXT2_FIRST_INO) ? "normal" : "unknown reserved";
2340 printf("inode %d (%s, %d links): ", nod, s, get_nod(fs, nod)->i_links_count);
2341 if(!allocated(GRP_GET_INODE_BITMAP(fs,nod), GRP_IBM_OFFSET(fs,nod)))
2346 make_perms(get_nod(fs, nod)->i_mode, perms);
2347 printf("%s, size: %d byte%s (%d block%s)\n", perms, plural(get_nod(fs, nod)->i_size), plural(get_nod(fs, nod)->i_blocks / INOBLK));
2348 switch(get_nod(fs, nod)->i_mode & FM_IFMT)
2351 list_blocks(fs, nod);
2354 print_link(fs, nod);
2357 list_blocks(fs, nod);
2360 print_dev(fs, nod);
2363 list_blocks(fs, nod);
2364 print_dir(fs, nod);
2367 print_dev(fs, nod);
2370 list_blocks(fs, nod);
2373 list_blocks(fs, nod);
2375 printf("Done with inode %d\n",nod);
2438 uint32 nod = EXT2_ROOT_INO;
2443 if(!(nod = find_path(fs, EXT2_ROOT_INO, pdest)))
2451 add2fs_from_file(fs, nod, fh, fs_timestamp, stats);
2461 add2fs_from_dir(fs, dopt[i], nod, squash_uids, squash_perms, fixstats, fs_timestamp, stats);
2702 uint32 nod;
2706 if(!(nod = find_path(fs, EXT2_ROOT_INO, gopt[i])))
2712 fprintf(fh, "%d:", get_nod(fs, nod)->i_size);
2713 flist_blocks(fs, nod, fh);