Lines Matching refs:outdir

223 static errcode_t alloc_size_dir(ext2_filsys fs, struct out_dir *outdir,  in alloc_size_dir()  argument
228 if (outdir->max) { in alloc_size_dir()
229 new_mem = realloc(outdir->buf, blocks * fs->blocksize); in alloc_size_dir()
232 outdir->buf = new_mem; in alloc_size_dir()
233 new_mem = realloc(outdir->hashes, in alloc_size_dir()
237 outdir->hashes = new_mem; in alloc_size_dir()
239 outdir->buf = malloc(blocks * fs->blocksize); in alloc_size_dir()
240 outdir->hashes = malloc(blocks * sizeof(ext2_dirhash_t)); in alloc_size_dir()
241 outdir->num = 0; in alloc_size_dir()
243 outdir->max = blocks; in alloc_size_dir()
247 static void free_out_dir(struct out_dir *outdir) in free_out_dir() argument
249 free(outdir->buf); in free_out_dir()
250 free(outdir->hashes); in free_out_dir()
251 outdir->max = 0; in free_out_dir()
252 outdir->num =0; in free_out_dir()
255 static errcode_t get_next_block(ext2_filsys fs, struct out_dir *outdir, in get_next_block() argument
260 if (outdir->num >= outdir->max) { in get_next_block()
261 retval = alloc_size_dir(fs, outdir, outdir->max + 50); in get_next_block()
265 *ret = outdir->buf + (outdir->num++ * fs->blocksize); in get_next_block()
399 struct out_dir *outdir) in copy_dir_entries() argument
419 outdir->max = 0; in copy_dir_entries()
420 retval = alloc_size_dir(fs, outdir, in copy_dir_entries()
424 outdir->num = fd->compress ? 0 : 1; in copy_dir_entries()
426 outdir->hashes[0] = 0; in copy_dir_entries()
428 if ((retval = get_next_block(fs, outdir, &block_start))) in copy_dir_entries()
450 if ((retval = get_next_block(fs, outdir, in copy_dir_entries()
459 outdir->hashes[outdir->num-1] = ent->hash | 1; in copy_dir_entries()
461 outdir->hashes[outdir->num-1] = ent->hash; in copy_dir_entries()
550 struct out_dir *outdir, in calculate_tree() argument
562 root_info = set_root_node(fs, outdir->buf, ino, parent); in calculate_tree()
563 root_offset = limit_offset = ((char *) root_info - outdir->buf) + in calculate_tree()
565 root_limit = (struct ext2_dx_countlimit *) (outdir->buf + limit_offset); in calculate_tree()
567 nblks = outdir->num; in calculate_tree()
572 root = (struct ext2_dx_entry *) (outdir->buf + root_offset); in calculate_tree()
577 ext2fs_cpu_to_le32(outdir->hashes[i]); in calculate_tree()
593 (outdir->buf + root_offset); in calculate_tree()
594 root->block = ext2fs_cpu_to_le32(outdir->num); in calculate_tree()
597 ext2fs_cpu_to_le32(outdir->hashes[i]); in calculate_tree()
598 if ((retval = get_next_block(fs, outdir, in calculate_tree()
610 ext2fs_cpu_to_le32(outdir->hashes[i]); in calculate_tree()
617 root_limit = (struct ext2_dx_countlimit *) (outdir->buf + limit_offset); in calculate_tree()
625 struct out_dir *outdir; member
647 if (blockcnt >= wd->outdir->num) { in write_dir_block()
667 dir = wd->outdir->buf + (blockcnt * fs->blocksize); in write_dir_block()
675 struct out_dir *outdir, in write_directory() argument
682 retval = e2fsck_expand_directory(ctx, ino, -1, outdir->num); in write_directory()
686 wd.outdir = outdir; in write_directory()
703 inode.i_size = outdir->num * fs->blocksize; in write_directory()
717 struct out_dir outdir; in e2fsck_rehash_dir() local
719 outdir.max = outdir.num = 0; in e2fsck_rehash_dir()
720 outdir.buf = 0; in e2fsck_rehash_dir()
721 outdir.hashes = 0; in e2fsck_rehash_dir()
801 retval = copy_dir_entries(ctx, &fd, &outdir); in e2fsck_rehash_dir()
809 retval = calculate_tree(fs, &outdir, ino, fd.parent); in e2fsck_rehash_dir()
814 retval = write_directory(ctx, fs, &outdir, ino, fd.compress); in e2fsck_rehash_dir()
822 free_out_dir(&outdir); in e2fsck_rehash_dir()