diff options
author | Theodore Ts'o <tytso@mit.edu> | 2007-04-04 22:33:31 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2007-04-04 22:33:31 -0400 |
commit | 28db82a84a33fab19f22da12bb2a8a3c558ae97b (patch) | |
tree | 4402b940b2570b5b098d8f5b6dd2bb78cd8da595 /e2fsck/e2fsck.h | |
parent | 86bc90f4f11df090f86dc764a4ea2d6dd5c13ffe (diff) | |
download | e2fsprogs-28db82a84a33fab19f22da12bb2a8a3c558ae97b.tar.gz |
Rework e2fsck's dirinfo abstraction to be more friendly for databases
Change the iterator abstraction and replace e2fsck_get_dir_info() with
e2fsck_dir_info_{set,get}_{parent,dotdot} so that we can support an
on-disk dirinfo implementation. This allows e2fsck to check very large
filesystems on systems with smaller amounts of memory and/or address
space.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'e2fsck/e2fsck.h')
-rw-r--r-- | e2fsck/e2fsck.h | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/e2fsck/e2fsck.h b/e2fsck/e2fsck.h index 638249e7..a7eba37e 100644 --- a/e2fsck/e2fsck.h +++ b/e2fsck/e2fsck.h @@ -263,9 +263,7 @@ struct e2fsck_struct { /* * Directory information */ - int dir_info_count; - int dir_info_size; - struct dir_info *dir_info; + struct dir_info_db *dir_info; /* * Indexed directory information @@ -374,10 +372,20 @@ extern void read_bad_blocks_file(e2fsck_t ctx, const char *bad_blocks_file, /* dirinfo.c */ extern void e2fsck_add_dir_info(e2fsck_t ctx, ext2_ino_t ino, ext2_ino_t parent); -extern struct dir_info *e2fsck_get_dir_info(e2fsck_t ctx, ext2_ino_t ino); extern void e2fsck_free_dir_info(e2fsck_t ctx); extern int e2fsck_get_num_dirinfo(e2fsck_t ctx); -extern struct dir_info *e2fsck_dir_info_iter(e2fsck_t ctx, int *control); +extern struct dir_info_iter *e2fsck_dir_info_iter_begin(e2fsck_t ctx); +extern struct dir_info *e2fsck_dir_info_iter(e2fsck_t ctx, + struct dir_info_iter *); +extern void e2fsck_dir_info_iter_end(e2fsck_t ctx, struct dir_info_iter *); +extern int e2fsck_dir_info_set_parent(e2fsck_t ctx, ext2_ino_t ino, + ext2_ino_t parent); +extern int e2fsck_dir_info_set_dotdot(e2fsck_t ctx, ext2_ino_t ino, + ext2_ino_t dotdot); +extern int e2fsck_dir_info_get_parent(e2fsck_t ctx, ext2_ino_t ino, + ext2_ino_t *parent); +extern int e2fsck_dir_info_get_dotdot(e2fsck_t ctx, ext2_ino_t ino, + ext2_ino_t *dotdot); /* dx_dirinfo.c */ extern void e2fsck_add_dx_dir(e2fsck_t ctx, ext2_ino_t ino, int num_blocks); |