Whamcloud - gitweb
Interim update of the debian/changelog and the release notes
[tools/e2fsprogs.git] / e2fsck / e2fsck.h
index 96b83da..5a4a0de 100644 (file)
@@ -135,6 +135,8 @@ struct resource_track {
        struct timeval user_start;
        struct timeval system_start;
        void    *brk_start;
+       unsigned long long bytes_read;
+       unsigned long long bytes_written;
 };
 #endif
 
@@ -152,6 +154,7 @@ struct resource_track {
 #define E2F_OPT_FORCE          0x0100
 #define E2F_OPT_WRITECHECK     0x0200
 #define E2F_OPT_COMPRESS_DIRS  0x0400
+#define E2F_OPT_FRAGCHECK      0x0800
 
 /*
  * E2fsck flags
@@ -192,6 +195,8 @@ typedef struct ea_refcount *ext2_refcount_t;
  */
 typedef struct e2fsck_struct *e2fsck_t;
 
+#define MAX_EXTENT_DEPTH_COUNT 5
+
 struct e2fsck_struct {
        ext2_filsys fs;
        const char *program_name;
@@ -326,12 +331,14 @@ struct e2fsck_struct {
        __u32 large_files;
        __u32 fs_ext_attr_inodes;
        __u32 fs_ext_attr_blocks;
+       __u32 extent_depth_count[MAX_EXTENT_DEPTH_COUNT];
 
+       /* misc fields */
        time_t now;
-
+       time_t time_fudge;      /* For working around buggy init scripts */
        int ext_attr_ver;
-
        profile_t       profile;
+       int blocks_per_page;
 
        /*
         * For the use of callers of the e2fsck functions; not used by
@@ -371,6 +378,9 @@ extern int e2fsck_run(e2fsck_t ctx);
 extern void read_bad_blocks_file(e2fsck_t ctx, const char *bad_blocks_file,
                                 int replace_bad_blocks);
 
+/* crc32.c */
+extern __u32 crc32_be(__u32 crc, unsigned char const *p, size_t len);
+
 /* dirinfo.c */
 extern void e2fsck_add_dir_info(e2fsck_t ctx, ext2_ino_t ino, ext2_ino_t parent);
 extern void e2fsck_free_dir_info(e2fsck_t ctx);
@@ -426,8 +436,11 @@ extern void e2fsck_setup_tdb_icount(e2fsck_t ctx, int flags,
 extern void e2fsck_use_inode_shortcuts(e2fsck_t ctx, int bool);
 extern int e2fsck_pass1_check_device_inode(ext2_filsys fs,
                                           struct ext2_inode *inode);
-extern int e2fsck_pass1_check_symlink(ext2_filsys fs,
+extern int e2fsck_pass1_check_symlink(ext2_filsys fs, ext2_ino_t ino,
                                      struct ext2_inode *inode, char *buf);
+extern void e2fsck_clear_inode(e2fsck_t ctx, ext2_ino_t ino,
+                              struct ext2_inode *inode, int restart_flag,
+                              const char *source);
 
 /* pass2.c */
 extern int e2fsck_process_bad_inode(e2fsck_t ctx, ext2_ino_t dir,
@@ -453,9 +466,7 @@ void e2fsck_rehash_directories(e2fsck_t ctx);
 
 /* super.c */
 void check_super_block(e2fsck_t ctx);
-
-/* swapfs.c */
-void swap_filesys(e2fsck_t ctx);
+int check_backup_super_block(e2fsck_t ctx);
 
 /* util.c */
 extern void *e2fsck_allocate_memory(e2fsck_t ctx, unsigned int size,
@@ -467,14 +478,21 @@ extern void e2fsck_read_bitmaps(e2fsck_t ctx);
 extern void e2fsck_write_bitmaps(e2fsck_t ctx);
 extern void preenhalt(e2fsck_t ctx);
 extern char *string_copy(e2fsck_t ctx, const char *str, int len);
+extern errcode_t e2fsck_zero_blocks(ext2_filsys fs, blk_t blk, int num,
+                                   blk_t *ret_blk, int *ret_count);
 #ifdef RESOURCE_TRACK
 extern void print_resource_track(const char *desc,
-                                struct resource_track *track);
-extern void init_resource_track(struct resource_track *track);
+                                struct resource_track *track,
+                                io_channel channel);
+extern void init_resource_track(struct resource_track *track,
+                               io_channel channel);
 #endif
 extern int inode_has_valid_blocks(struct ext2_inode *inode);
 extern void e2fsck_read_inode(e2fsck_t ctx, unsigned long ino,
                              struct ext2_inode * inode, const char * proc);
+extern void e2fsck_read_inode_full(e2fsck_t ctx, unsigned long ino,
+                                  struct ext2_inode *inode,
+                                  const int bufsize, const char *proc);
 extern void e2fsck_write_inode(e2fsck_t ctx, unsigned long ino,
                               struct ext2_inode * inode, const char * proc);
 extern void e2fsck_write_inode_full(e2fsck_t ctx, unsigned long ino,