Home | History | Annotate | Download | only in debugfs
      1 /*
      2  * debugfs.h --- header file for the debugfs program
      3  */
      4 
      5 #include "ss/ss.h"
      6 #include "ext2fs/ext2_fs.h"
      7 #include "ext2fs/ext2fs.h"
      8 #include "../misc/create_inode.h"
      9 #include "support/quotaio.h"
     10 
     11 #ifdef __STDC__
     12 #define NOARGS void
     13 #else
     14 #define NOARGS
     15 #define const
     16 #endif
     17 
     18 /*
     19  * Flags used by the common argument processing functions
     20  */
     21 #define CHECK_FS_RW		0x0001
     22 #define CHECK_FS_BITMAPS	0x0002
     23 #define CHECK_FS_NOTOPEN	0x0004
     24 
     25 extern ext2_filsys current_fs;
     26 extern quota_ctx_t current_qctx;
     27 extern ext2_ino_t	root, cwd;
     28 extern int sci_idx;
     29 extern ss_request_table debug_cmds, extent_cmds;
     30 
     31 extern void reset_getopt(void);
     32 extern FILE *open_pager(void);
     33 extern void close_pager(FILE *stream);
     34 extern int check_fs_open(char *name);
     35 extern int check_fs_not_open(char *name);
     36 extern int check_fs_read_write(char *name);
     37 extern int check_fs_bitmaps(char *name);
     38 extern ext2_ino_t string_to_inode(char *str);
     39 extern char *inode_time_to_string(__u32 xtime, __u32 xtime_extra);
     40 extern char *time_to_string(__s64);
     41 extern __s64 string_to_time(const char *);
     42 extern unsigned long parse_ulong(const char *str, const char *cmd,
     43 				 const char *descr, int *err);
     44 extern unsigned long long parse_ulonglong(const char *str, const char *cmd,
     45 					  const char *descr, int *err);
     46 extern int strtoblk(const char *cmd, const char *str, const char *errmsg,
     47 		    blk64_t *ret);
     48 extern int common_args_process(int argc, char *argv[], int min_argc,
     49 			       int max_argc, const char *cmd,
     50 			       const char *usage, int flags);
     51 extern int common_inode_args_process(int argc, char *argv[],
     52 				     ext2_ino_t *inode, int flags);
     53 extern int common_block_args_process(int argc, char *argv[],
     54 				     blk64_t *block, blk64_t *count);
     55 extern int debugfs_read_inode(ext2_ino_t ino, struct ext2_inode * inode,
     56 			      const char *cmd);
     57 extern int debugfs_read_inode_full(ext2_ino_t ino, struct ext2_inode * inode,
     58 				   const char *cmd, int bufsize);
     59 extern int debugfs_write_inode(ext2_ino_t ino, struct ext2_inode * inode,
     60 			       const char *cmd);
     61 extern int debugfs_write_inode_full(ext2_ino_t ino, struct ext2_inode * inode,
     62 				    const char *cmd, int bufsize);
     63 extern int debugfs_write_new_inode(ext2_ino_t ino, struct ext2_inode * inode,
     64 				   const char *cmd);
     65 extern int ext2_file_type(unsigned int mode);
     66 
     67 /* ss command functions */
     68 
     69 /* dump.c */
     70 extern void do_dump(int argc, char **argv);
     71 extern void do_cat(int argc, char **argv);
     72 extern void do_rdump(int argc, char **argv);
     73 
     74 /* extent_inode.c */
     75 extern void do_extent_open(int argc, char **argv);
     76 extern void do_extent_close(int argc, char **argv);
     77 extern void do_current_node(int argc, char **argv);
     78 extern void do_root_node(int argc, char **argv);
     79 extern void do_last_leaf(int argc, char **argv);
     80 extern void do_first_sib(int argc, char **argv);
     81 extern void do_last_sib(int argc, char **argv);
     82 extern void do_next_sib(int argc, char **argv);
     83 extern void do_prev_sib(int argc, char **argv);
     84 extern void do_next_leaf(int argc, char **argv);
     85 extern void do_prev_leaf(int argc, char **argv);
     86 extern void do_next(int argc, char **argv);
     87 extern void do_prev(int argc, char **argv);
     88 extern void do_up(int argc, char **argv);
     89 extern void do_down(int argc, char **argv);
     90 extern void do_delete_node(int argc, char **argv);
     91 extern void do_replace_node(int argc, char **argv);
     92 extern void do_split_node(int argc, char **argv);
     93 extern void do_insert_node(int argc, char **argv);
     94 extern void do_set_bmap(int argc, char **argv);
     95 extern void do_print_all(int argc, char **argv);
     96 extern void do_fix_parents(int argc, char **argv);
     97 extern void do_info(int argc, char **argv);
     98 extern void do_goto_block(int argc, char **argv);
     99 
    100 /* htree.c */
    101 extern void do_htree_dump(int argc, char **argv);
    102 extern void do_dx_hash(int argc, char **argv);
    103 extern void do_dirsearch(int argc, char **argv);
    104 
    105 /* logdump.c */
    106 extern void do_logdump(int argc, char **argv);
    107 
    108 /* lsdel.c */
    109 extern void do_lsdel(int argc, char **argv);
    110 
    111 /* icheck.c */
    112 extern void do_icheck(int argc, char **argv);
    113 
    114 /* ncheck.c */
    115 extern void do_ncheck(int argc, char **argv);
    116 
    117 /* set_fields.c */
    118 extern void do_set_super(int argc, char **);
    119 extern void do_set_inode(int argc, char **);
    120 extern void do_set_block_group_descriptor(int argc, char **);
    121 
    122 /* unused.c */
    123 extern void do_dump_unused(int argc, char **argv);
    124 
    125 /* debugfs.c */
    126 extern void internal_dump_inode(FILE *, const char *, ext2_ino_t,
    127 				struct ext2_inode *, int);
    128 
    129 extern void do_dirty_filesys(int argc, char **argv);
    130 extern void do_open_filesys(int argc, char **argv);
    131 extern void do_close_filesys(int argc, char **argv);
    132 extern void do_lcd(int argc, char **argv);
    133 extern void do_init_filesys(int argc, char **argv);
    134 extern void do_show_super_stats(int argc, char **argv);
    135 extern void do_kill_file(int argc, char **argv);
    136 extern void do_rm(int argc, char **argv);
    137 extern void do_link(int argc, char **argv);
    138 extern void do_undel(int argc, char **argv);
    139 extern void do_unlink(int argc, char **argv);
    140 extern void do_find_free_block(int argc, char **argv);
    141 extern void do_find_free_inode(int argc, char **argv);
    142 extern void do_stat(int argc, char **argv);
    143 extern void do_dump_extents(int argc, char **argv);
    144 extern void do_blocks(int argc, char *argv[]);
    145 
    146 extern void do_chroot(int argc, char **argv);
    147 extern void do_clri(int argc, char **argv);
    148 extern void do_freei(int argc, char **argv);
    149 extern void do_seti(int argc, char **argv);
    150 extern void do_testi(int argc, char **argv);
    151 extern void do_freeb(int argc, char **argv);
    152 extern void do_setb(int argc, char **argv);
    153 extern void do_testb(int argc, char **argv);
    154 extern void do_modify_inode(int argc, char **argv);
    155 extern void do_list_dir(int argc, char **argv);
    156 extern void do_change_working_dir(int argc, char **argv);
    157 extern void do_print_working_directory(int argc, char **argv);
    158 extern void do_write(int argc, char **argv);
    159 extern void do_mknod(int argc, char **argv);
    160 extern void do_mkdir(int argc, char **argv);
    161 extern void do_rmdir(int argc, char **argv);
    162 extern void do_show_debugfs_params(int argc, char **argv);
    163 extern void do_expand_dir(int argc, char **argv);
    164 extern void do_features(int argc, char **argv);
    165 extern void do_bmap(int argc, char **argv);
    166 extern void do_imap(int argc, char **argv);
    167 extern void do_idump(int argc, char *argv[]);
    168 extern void do_set_current_time(int argc, char **argv);
    169 extern void do_supported_features(int argc, char **argv);
    170 extern void do_punch(int argc, char **argv);
    171 extern void do_fallocate(int argc, char **argv);
    172 extern void do_symlink(int argc, char **argv);
    173 
    174 extern void do_dump_mmp(int argc, char **argv);
    175 extern void do_set_mmp_value(int argc, char **argv);
    176 
    177 extern void do_freefrag(int argc, char **argv);
    178 extern void do_filefrag(int argc, char *argv[]);
    179 
    180 /* do_journal.c */
    181 
    182 extern void do_journal_write(int argc, char *argv[]);
    183 extern void do_journal_open(int argc, char *argv[]);
    184 extern void do_journal_close(int argc, char *argv[]);
    185 extern void do_journal_run(int argc, char *argv[]);
    186 
    187 /* quota.c */
    188 extern void do_list_quota(int argc, char *argv[]);
    189 extern void do_get_quota(int argc, char *argv[]);
    190 
    191 /* util.c */
    192 extern __s64 string_to_time(const char *arg);
    193 errcode_t read_list(char *str, blk64_t **list, size_t *len);
    194 
    195 /* xattrs.c */
    196 void dump_inode_attributes(FILE *out, ext2_ino_t ino);
    197 void do_get_xattr(int argc, char **argv);
    198 void do_set_xattr(int argc, char **argv);
    199 void do_rm_xattr(int argc, char **argv);
    200 void do_list_xattr(int argc, char **argv);
    201 
    202 /* zap.c */
    203 extern void do_zap_block(int argc, char **argv);
    204 extern void do_block_dump(int argc, char **argv);
    205 extern void do_byte_hexdump(FILE *fp, unsigned char *buf, size_t bufsize);
    206