summaryrefslogtreecommitdiff
path: root/e2fsck/e2fsck.h
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2007-04-04 22:33:31 -0400
committerTheodore Ts'o <tytso@mit.edu>2007-04-04 22:33:31 -0400
commit28db82a84a33fab19f22da12bb2a8a3c558ae97b (patch)
tree4402b940b2570b5b098d8f5b6dd2bb78cd8da595 /e2fsck/e2fsck.h
parent86bc90f4f11df090f86dc764a4ea2d6dd5c13ffe (diff)
downloade2fsprogs-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.h18
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);