Lines Matching refs:fd

84 static void read_sb(int fd, struct ext4_super_block *sb)
88 ret = lseek64(fd, 1024, SEEK_SET);
92 ret = read(fd, sb, sizeof(*sb));
100 static void write_sb(int fd, unsigned long long offset, struct ext4_super_block *sb)
108 ret = lseek64(fd, offset, SEEK_SET);
112 ret = write(fd, sb, sizeof(*sb));
119 static int get_fs_fixup_state(int fd)
128 lseek64(fd, 0, SEEK_SET);
129 len = read(fd, &magic, sizeof(magic));
150 static int set_fs_fixup_state(int fd, int state)
177 lseek64(fd, 0, SEEK_SET);
178 len = write(fd, &magic, sizeof(magic));
183 read_sb(fd, &sb);
191 write_sb(fd, 1024, &sb);
196 static int read_ext(int fd)
202 read_sb(fd, &sb);
220 ret = lseek64(fd, info.len, SEEK_SET);
224 ret = lseek64(fd, info.block_size * (aux_info.first_data_block + 1), SEEK_SET);
228 ret = read(fd, aux_info.bg_desc, info.block_size * aux_info.bg_desc_blocks);
255 static int read_inode(int fd, unsigned int inum, struct ext4_inode *inode)
267 if (lseek64(fd, inode_offset, SEEK_SET) < 0) {
271 len=read(fd, inode, sizeof(*inode));
279 static int read_block(int fd, unsigned long long block_num, void *block)
286 if (lseek64(fd, off, SEEK_SET) , 0) {
290 len=read(fd, block, info.block_size);
298 static int write_block(int fd, unsigned long long block_num, void *block)
309 if (lseek64(fd, off, SEEK_SET) < 0) {
313 len=write(fd, block, info.block_size);
336 static void check_inode_bitmap(int fd, unsigned int bg_num)
348 read_block(fd, inode_bitmap_block_num, block);
361 write_block(fd, inode_bitmap_block_num, block);
368 static int update_superblocks_and_bg_desc(int fd, int state)
376 read_sb(fd, &sb);
391 check_inode_bitmap(fd, i);
426 write_sb(fd, (unsigned long long)i * info.blocks_per_group * info.block_size + sb_offset, &sb);
428 ret = lseek64(fd, ((unsigned long long)i * info.blocks_per_group * info.block_size) +
434 ret = write(fd, aux_info.bg_desc, info.block_size * aux_info.bg_desc_blocks);
472 static int get_indirect_blocks(int fd, struct ext4_inode *inode,
486 read_block(fd, inode->i_block[EXT4_NDIR_BLOCKS], indirect_block);
499 static int get_block_list_indirect(int fd, struct ext4_inode *inode, unsigned long long *block_list)
504 get_indirect_blocks(fd, inode, block_list, &count);
510 static int get_extent_ents(int fd, struct ext4_extent_header *ext_hdr, unsigned long long *block_list)
536 static int get_extent_idx(int fd, struct ext4_extent_header *ext_hdr, unsigned long long *block_list)
556 read_block(fd, fs_block_num, block);
560 get_extent_ents(fd, tmp_ext_hdr, block_list); /* leaf node, fill in block_list */
562 get_extent_idx(fd, tmp_ext_hdr, block_list); /* recurse down the tree */
569 static int get_block_list_extents(int fd, struct ext4_inode *inode, unsigned long long *block_list)
581 get_extent_ents(fd, (struct ext4_extent_header *)inode->i_block, block_list);
585 get_extent_idx(fd, (struct ext4_extent_header *)inode->i_block, block_list);
590 static int is_entry_dir(int fd, struct ext4_dir_entry_2 *dirp, int pass)
608 read_inode(fd, (dirp->inode & 0x7fffffff), &inode);
618 static int recurse_dir(int fd, struct ext4_inode *inode, char *dirbuf, int dirsize, int mode)
651 get_block_list_extents(fd, inode, block_list);
665 get_block_list_indirect(fd, inode, block_list);
670 read_block(fd, block_list[i], dirbuf + (i * info.block_size));
708 is_dir = is_entry_dir(fd, dirp, mode);
713 read_inode(fd, dirp->inode & 0x7fffffff, &tmp_inode);
734 recurse_dir(fd, &tmp_inode, tmp_dirbuf, tmp_dirsize, mode);
767 write_block(fd, block_list[i], dirbuf + (i * info.block_size));
786 int fd;
801 fd = open(fsdev, O_RDWR);
803 if (fd < 0)
806 read_ext(fd);
828 read_inode(fd, EXT4_ROOT_INO, &root_inode);
858 if (get_fs_fixup_state(fd) == STATE_UNSET) {
861 recurse_dir(fd, &root_inode, dirbuf, dirsize, SANITY_CHECK_PASS);
862 update_superblocks_and_bg_desc(fd, STATE_UNSET);
866 set_fs_fixup_state(fd, STATE_MARKING_INUMS);
869 if (get_fs_fixup_state(fd) == STATE_MARKING_INUMS) {
871 if (!recurse_dir(fd, &root_inode, dirbuf, dirsize, MARK_INODE_NUMS)) {
872 set_fs_fixup_state(fd, STATE_UPDATING_INUMS);
876 if (get_fs_fixup_state(fd) == STATE_UPDATING_INUMS) {
878 if (!recurse_dir(fd, &root_inode, dirbuf, dirsize, UPDATE_INODE_NUMS)) {
879 set_fs_fixup_state(fd, STATE_UPDATING_SB);
883 if (get_fs_fixup_state(fd) == STATE_UPDATING_SB) {
887 if (!update_superblocks_and_bg_desc(fd, STATE_UPDATING_SB)) {
888 set_fs_fixup_state(fd, STATE_UNSET);
892 close(fd);