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