⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsck.h

📁 reiserfsprogs-3.6.19.tar.gz 源码 给有需要的人!
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * Copyright 1996-2004 by Hans Reiser, licensing governed by  * reiserfsprogs/README */#define _GNU_SOURCE#ifndef HAVE_CONFIG_H#  include "config.h"#endif#include "io.h"#include "misc.h"#include "reiserfs_lib.h"#include <string.h>#include <errno.h>#include <time.h>#include <assert.h>#include "../version.h"/* main.c */extern reiserfs_filsys_t * fs;int main (int argc, char * argv []);/* Exit codes. */#define EXIT_OK		0#define EXIT_FIXED	1#define EXIT_REBOOT	2#define EXIT_FATAL	4#define EXIT_FIXABLE	6#define EXIT_OPER	8   /* Some operation returns error. */#define EXIT_USER	16/* * modes */#define DO_NOTHING              0#define FSCK_CHECK              1#define FSCK_FIX_FIXABLE        2#define FSCK_SB                 3#define FSCK_REBUILD            4#define FSCK_ROLLBACK_CHANGES   5#define FSCK_CLEAN_ATTRIBUTES	7#define FSCK_AUTO               8 /* -a || -p specified *//* temporary */#define DO_TEST                 9/* * options */#define OPT_INTERACTIVE                 1 << 0#define OPT_ADJUST_FILE_SIZE            1 << 1	/* not default yet */#define OPT_QUIET                       1 << 2	/* no "speed" info */#define OPT_SILENT                      1 << 3	/* no complains about found corruptions */#define OPT_BACKGROUND                  1 << 4#define OPT_SKIP_JOURNAL                1 << 5#define OPT_HASH_DEFINED                1 << 6#define OPT_SAVE_PASSES_DUMP            1 << 7#define OPT_SAVE_ROLLBACK               1 << 8#define OPT_YES				1 << 9#define BADBLOCKS_FILE               	1 << 10/* pass0.c */void pass_0 (reiserfs_filsys_t *);void load_pass_0_result (FILE *, reiserfs_filsys_t *);int leaf_structure_check(reiserfs_filsys_t * fs, struct buffer_head * bh);int is_used_leaf (unsigned long block);int is_good_unformatted (unsigned long block);void mark_good_unformatted (unsigned long block);int is_bad_unformatted (unsigned long block);int are_there_allocable_blocks (unsigned int amout_needed);unsigned long alloc_block (void);void make_allocable (unsigned long block);void register_uninsertable (unsigned long block);void register_saved_item (void);int still_bad_unfm_ptr_1 (unsigned long block);int still_bad_unfm_ptr_2 (unsigned long block);void make_alloc_bitmap (reiserfs_filsys_t *);void delete_aux_bitmaps ();void set_aux_bitmaps(reiserfs_bitmap_t * leaves, reiserfs_bitmap_t * good, reiserfs_bitmap_t * bad);#define __is_marked(name,block) reiserfs_bitmap_test_bit (name##_bitmap, block)#define __mark(name,block) reiserfs_bitmap_set_bit (name##_bitmap, block)#define __unmark(name,block) reiserfs_bitmap_clear_bit (name##_bitmap, block)/* unformatted in tree */extern reiserfs_bitmap_t * bad_unfm_in_tree_once_bitmap;#define is_bad_unfm_in_tree_once(block) __is_marked (bad_unfm_in_tree_once, block)#define mark_bad_unfm_in_tree_once(block) __mark (bad_unfm_in_tree_once, block)/* pass1.c */void pass_1 (reiserfs_filsys_t *);void load_pass_1_result (FILE *, reiserfs_filsys_t *);struct buffer_head * make_buffer (int dev, unsigned long blocknr, int size, char * data);void build_the_tree (void);extern int g_unaccessed_items;int is_item_reachable (struct item_head * ih);void mark_item_reachable (struct item_head * ih, struct buffer_head * bh);void mark_item_unreachable (struct item_head * ih);struct si * remove_saved_item (struct si * si);int tree_is_empty (void);void make_single_leaf_tree (struct buffer_head * bh);/* pass2.c */void pass_2 (reiserfs_filsys_t *);void load_pass_2_result (reiserfs_filsys_t *);void insert_item_separately (struct item_head * ih, char * item, int was_in_tree);void save_item (struct si ** head, struct item_head * ih, char * item, __u32 blocknr);struct si * save_and_delete_file_item (struct si * si, struct path * path);void take_bad_blocks_put_into_tree (void);void rewrite_object (struct item_head * ih, int do_remap);void pass_2_take_bad_blocks_put_into_tree (void);/*int is_remapped (struct item_head * ih);*/void link_relocated_files (void);int should_relocate (struct item_head * ih);void relocate_dir (struct item_head * ih, int change_ih);extern __u32 objectid_for_relocation (struct key * key);extern void linked_already(struct key *new_key);/* file.c */struct si {    struct item_head si_ih;    char * si_dnm_data;    struct si * si_next;    __u32 si_blocknr;    // changed by XB;    struct si * last_known;};void put_saved_items_into_tree (struct si *);int reiserfsck_file_write (struct item_head * ih, char * item, int was_in_tree);int are_file_items_correct (struct item_head * sd_ih, void * sd, __u64 * size, __u32 * blocks, int mark_passed_items, int * symlink);int delete_N_items_after_key(struct key * start_key, struct si ** save_here, int skip_dir_items, int n_to_delete);void rewrite_file (struct item_head * ih, int should_relocate, int should_change_ih);/* semantic.c *//* return values for check_regular_file and check_semantic_tree */#define OK 0#define STAT_DATA_NOT_FOUND -1#define DIRECTORY_HAS_NO_ITEMS -2#define RELOCATED -3#define LOOP_FOUND -4void load_semantic_result (FILE *, reiserfs_filsys_t *);void pass_3_semantic (reiserfs_filsys_t *);void semantic_check (void);int check_semantic_tree (struct key * key, struct key * parent, int is_dot_dot, int lost_found, struct item_head * new_ih);void zero_nlink (struct item_head * ih, void * sd);int not_a_directory (void * sd);int not_a_regfile (void * sd);int fix_obviously_wrong_sd_mode (struct path * path);int is_dot_dot (char * name, int namelen);int is_dot (char * name, int namelen);/*void create_dir_sd (reiserfs_filsys_t * fs,   struct path * path, struct key * key);*/int rebuild_check_regular_file (struct path * path, void * sd,				struct item_head * new_ih);int rebuild_semantic_pass (struct key * key, struct key * parent, int is_dot_dot,			   struct item_head * new_ih);/* lost+found.c */void pass_3a_look_for_lost (reiserfs_filsys_t *);void load_lost_found_result (reiserfs_filsys_t *);/* pass4.c */void pass_4_check_unaccessed_items (void);/* check.c */int is_leaf_bad (struct buffer_head * bh);int is_bad_item (struct buffer_head * bh, struct item_head *, char *);/*int check_file_system (void);*/void reiserfsck_check_pass1 (void);/*char * bad_name (char * name, int namelen);*//* to test result of direcotry item recovering on pass 0 */int is_bad_directory (struct item_head * ih, char * item, int dev, int blocksize);//extern int bad_block_number (struct super_block * s, blocknr_t block);/* check_tree.c */void check_fs_tree (reiserfs_filsys_t *);void do_clean_attributes (reiserfs_filsys_t * fs);int bad_pair (reiserfs_filsys_t *, struct buffer_head * bh, int i);int bad_leaf_2 (reiserfs_filsys_t *, struct buffer_head * bh);#if 0extern int should_be_relocated (struct key * key);extern void to_be_relocated (struct key * key);extern void clear_relocated_list(void);#endif/* ustree.c */void reiserfsck_paste_into_item (struct path * path, const char * body, int size);void reiserfsck_insert_item (struct path * path, struct item_head * ih, const char * body);void reiserfsck_delete_item (struct path * path, int temporary);void reiserfsck_cut_from_item (struct path * path, int cut_size);/*typedef	int (comp3_function_t)(void * key1, void * key2, int version);*//*typedef int (comp_function_t)(struct key * key1, struct key * key2);*//*int ubin_search_id(__u32 * id, __u32 * base, __u32 number, __u32 * pos);*//*int usearch_by_key (struct super_block * s, struct key * key, struct path * path);*//*int usearch_by_key_3 (struct super_block * s, struct key * key, struct path * path, int * repeat, int stop_level,		      comp3_function_t comp_func, int version);				      int usearch_by_entry_key (struct super_block * s, struct key * key, struct path * path);*/typedef int do_after_read_t (reiserfs_filsys_t *, struct buffer_head **, int h);typedef int do_on_full_path_t (reiserfs_filsys_t *, struct buffer_head **, int);void pass_through_tree (reiserfs_filsys_t *, do_after_read_t, do_on_full_path_t, int depth);/* bitmap.c */int reiserfsck_reiserfs_new_blocknrs (reiserfs_filsys_t * fs,				      unsigned long * pblocknrs,				      unsigned long start_from,				      int amount_needed);int reiserfsck_reiserfs_free_block (reiserfs_filsys_t * fs, unsigned long block);struct buffer_head * reiserfsck_get_new_buffer (unsigned long start);int is_block_used (unsigned long block);void mark_block_used (unsigned long block, int check_hardware);void mark_block_uninsertable (unsigned long block);int is_block_uninsertable (unsigned long block);/* objectid.c */int comp_ids(const void *p1, const void *p2);typedef struct id_map {    void **index;    __u32 count, last_used;} id_map_t;id_map_t *id_map_init();void id_map_free(id_map_t *);int id_map_test(id_map_t *map, __u32 id);int id_map_mark(id_map_t *map, __u32 id);__u32 id_map_alloc(id_map_t *map);void id_map_flush(struct id_map * map, reiserfs_filsys_t * fs);    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -