blob: 6b4f6ef1968c5134de3d15d36cf735e7aee5dab1 [file] [log] [blame]
Theodore Ts'o3839e651997-04-26 13:21:57 +00001/*
2 * debugfs.h --- header file for the debugfs program
3 */
4
JP Abgralle0ed7402014-03-19 19:08:39 -07005#include "ss/ss.h"
Theodore Ts'o54c637d2001-05-14 11:45:38 +00006#include "ext2fs/ext2_fs.h"
Theodore Ts'o3839e651997-04-26 13:21:57 +00007#include "ext2fs/ext2fs.h"
8
Theodore Ts'o50e1e101997-04-26 13:58:21 +00009#ifdef __STDC__
10#define NOARGS void
11#else
12#define NOARGS
13#define const
14#endif
15
Theodore Ts'oe1018ee2002-01-03 04:55:25 -050016/*
17 * Flags used by the common argument processing functions
18 */
19#define CHECK_FS_RW 0x0001
20#define CHECK_FS_BITMAPS 0x0002
21#define CHECK_FS_NOTOPEN 0x0004
22
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +000023extern ext2_filsys current_fs;
Theodore Ts'ob044c2e2001-01-11 15:26:39 +000024extern ext2_ino_t root, cwd;
JP Abgralle0ed7402014-03-19 19:08:39 -070025extern int sci_idx;
26extern ss_request_table debug_cmds, extent_cmds;
Theodore Ts'o3839e651997-04-26 13:21:57 +000027
Theodore Ts'o88494bb2003-05-13 23:03:43 -040028extern void reset_getopt(void);
Theodore Ts'o3839e651997-04-26 13:21:57 +000029extern FILE *open_pager(void);
30extern void close_pager(FILE *stream);
31extern int check_fs_open(char *name);
32extern int check_fs_not_open(char *name);
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +000033extern int check_fs_read_write(char *name);
Theodore Ts'od61f6172000-05-27 16:04:00 +000034extern int check_fs_bitmaps(char *name);
Theodore Ts'ob044c2e2001-01-11 15:26:39 +000035extern ext2_ino_t string_to_inode(char *str);
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +000036extern char *time_to_string(__u32);
Theodore Ts'o4efae602005-09-24 21:56:38 -040037extern time_t string_to_time(const char *);
Theodore Ts'oe1018ee2002-01-03 04:55:25 -050038extern unsigned long parse_ulong(const char *str, const char *cmd,
39 const char *descr, int *err);
JP Abgralle0ed7402014-03-19 19:08:39 -070040extern unsigned long long parse_ulonglong(const char *str, const char *cmd,
41 const char *descr, int *err);
42extern int strtoblk(const char *cmd, const char *str, blk64_t *ret);
Theodore Ts'oe1018ee2002-01-03 04:55:25 -050043extern int common_args_process(int argc, char *argv[], int min_argc,
44 int max_argc, const char *cmd,
45 const char *usage, int flags);
46extern int common_inode_args_process(int argc, char *argv[],
47 ext2_ino_t *inode, int flags);
48extern int common_block_args_process(int argc, char *argv[],
JP Abgralle0ed7402014-03-19 19:08:39 -070049 blk64_t *block, blk64_t *count);
Theodore Ts'oe1018ee2002-01-03 04:55:25 -050050extern int debugfs_read_inode(ext2_ino_t ino, struct ext2_inode * inode,
51 const char *cmd);
Theodore Ts'o9b9a7802005-12-10 21:50:30 -050052extern int debugfs_read_inode_full(ext2_ino_t ino, struct ext2_inode * inode,
53 const char *cmd, int bufsize);
Theodore Ts'oe1018ee2002-01-03 04:55:25 -050054extern int debugfs_write_inode(ext2_ino_t ino, struct ext2_inode * inode,
55 const char *cmd);
JP Abgralle0ed7402014-03-19 19:08:39 -070056extern int debugfs_write_inode_full(ext2_ino_t ino, struct ext2_inode * inode,
57 const char *cmd, int bufsize);
Theodore Ts'o030970e2005-03-20 20:05:22 -050058extern int debugfs_write_new_inode(ext2_ino_t ino, struct ext2_inode * inode,
59 const char *cmd);
JP Abgralle0ed7402014-03-19 19:08:39 -070060extern int ext2_file_type(unsigned int mode);
Theodore Ts'o3839e651997-04-26 13:21:57 +000061
Theodore Ts'o50e1e101997-04-26 13:58:21 +000062/* ss command functions */
63
64/* dump.c */
65extern void do_dump(int argc, char **argv);
66extern void do_cat(int argc, char **argv);
Theodore Ts'ob044c2e2001-01-11 15:26:39 +000067extern void do_rdump(int argc, char **argv);
Theodore Ts'o50e1e101997-04-26 13:58:21 +000068
JP Abgralle0ed7402014-03-19 19:08:39 -070069/* extent_inode.c */
70extern void do_extent_open(int argc, char **argv);
71extern void do_extent_close(int argc, char **argv);
72extern void do_current_node(int argc, char **argv);
73extern void do_root_node(int argc, char **argv);
74extern void do_last_leaf(int argc, char **argv);
75extern void do_first_sib(int argc, char **argv);
76extern void do_last_sib(int argc, char **argv);
77extern void do_next_sib(int argc, char **argv);
78extern void do_prev_sib(int argc, char **argv);
79extern void do_next_leaf(int argc, char **argv);
80extern void do_prev_leaf(int argc, char **argv);
81extern void do_next(int argc, char **argv);
82extern void do_prev(int argc, char **argv);
83extern void do_up(int argc, char **argv);
84extern void do_down(int argc, char **argv);
85extern void do_delete_node(int argc, char **argv);
86extern void do_replace_node(int argc, char **argv);
87extern void do_split_node(int argc, char **argv);
88extern void do_insert_node(int argc, char **argv);
89extern void do_set_bmap(int argc, char **argv);
90extern void do_print_all(int argc, char **argv);
91extern void do_fix_parents(int argc, char **argv);
92extern void do_info(int argc, char **argv);
93extern void do_goto_block(int argc, char **argv);
94
Theodore Ts'o3e699062002-10-13 23:56:28 -040095/* htree.c */
96extern void do_htree_dump(int argc, char **argv);
97extern void do_dx_hash(int argc, char **argv);
98extern void do_dirsearch(int argc, char **argv);
99
Theodore Ts'o5e4f0702001-06-01 15:36:05 +0000100/* logdump.c */
101extern void do_logdump(int argc, char **argv);
102
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000103/* lsdel.c */
104extern void do_lsdel(int argc, char **argv);
105
106/* icheck.c */
107extern void do_icheck(int argc, char **argv);
108
109/* ncheck.c */
110extern void do_ncheck(int argc, char **argv);
111
Theodore Ts'o7dec0502004-12-21 20:37:36 -0500112/* set_fields.c */
Theodore Ts'ob74d1d82001-01-12 17:23:52 +0000113extern void do_set_super(int argc, char **);
Theodore Ts'o7dec0502004-12-21 20:37:36 -0500114extern void do_set_inode(int argc, char **);
Theodore Ts'od4e0b1c2007-08-03 18:56:01 -0400115extern void do_set_block_group_descriptor(int argc, char **);
Theodore Ts'ob74d1d82001-01-12 17:23:52 +0000116
Theodore Ts'o54434922003-12-07 01:28:50 -0500117/* unused.c */
118extern void do_dump_unused(int argc, char **argv);
119
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000120/* debugfs.c */
Theodore Ts'oefc6f622008-08-27 23:07:54 -0400121extern void internal_dump_inode(FILE *, const char *, ext2_ino_t,
Theodore Ts'oda81e3f2001-03-29 20:49:58 +0000122 struct ext2_inode *, int);
123
Theodore Ts'o4a31c481998-03-30 01:27:25 +0000124extern void do_dirty_filesys(int argc, char **argv);
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000125extern void do_open_filesys(int argc, char **argv);
126extern void do_close_filesys(int argc, char **argv);
Theodore Ts'ob044c2e2001-01-11 15:26:39 +0000127extern void do_lcd(int argc, char **argv);
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000128extern void do_init_filesys(int argc, char **argv);
129extern void do_show_super_stats(int argc, char **argv);
130extern void do_kill_file(int argc, char **argv);
131extern void do_rm(int argc, char **argv);
132extern void do_link(int argc, char **argv);
Theodore Ts'o682720a2002-01-03 05:10:04 -0500133extern void do_undel(int argc, char **argv);
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000134extern void do_unlink(int argc, char **argv);
135extern void do_find_free_block(int argc, char **argv);
136extern void do_find_free_inode(int argc, char **argv);
137extern void do_stat(int argc, char **argv);
JP Abgralle0ed7402014-03-19 19:08:39 -0700138extern void do_dump_extents(int argc, char **argv);
139extern void do_blocks(int argc, char *argv[]);
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000140
141extern void do_chroot(int argc, char **argv);
142extern void do_clri(int argc, char **argv);
143extern void do_freei(int argc, char **argv);
144extern void do_seti(int argc, char **argv);
145extern void do_testi(int argc, char **argv);
146extern void do_freeb(int argc, char **argv);
147extern void do_setb(int argc, char **argv);
148extern void do_testb(int argc, char **argv);
149extern void do_modify_inode(int argc, char **argv);
150extern void do_list_dir(int argc, char **argv);
151extern void do_change_working_dir(int argc, char **argv);
152extern void do_print_working_directory(int argc, char **argv);
153extern void do_write(int argc, char **argv);
154extern void do_mknod(int argc, char **argv);
155extern void do_mkdir(int argc, char **argv);
156extern void do_rmdir(int argc, char **argv);
157extern void do_show_debugfs_params(int argc, char **argv);
158extern void do_expand_dir(int argc, char **argv);
Theodore Ts'o3e699062002-10-13 23:56:28 -0400159extern void do_features(int argc, char **argv);
160extern void do_bmap(int argc, char **argv);
Theodore Ts'obecf36f2003-05-05 11:35:04 -0400161extern void do_imap(int argc, char **argv);
Theodore Ts'o9b9a7802005-12-10 21:50:30 -0500162extern void do_set_current_time(int argc, char **argv);
Theodore Ts'o42080a82009-07-11 23:23:16 -0400163extern void do_supported_features(int argc, char **argv);
JP Abgralle0ed7402014-03-19 19:08:39 -0700164extern void do_punch(int argc, char **argv);
165extern void do_symlink(int argc, char **argv);
Theodore Ts'oda81e3f2001-03-29 20:49:58 +0000166
JP Abgralle0ed7402014-03-19 19:08:39 -0700167extern void do_dump_mmp(int argc, char **argv);
168extern void do_set_mmp_value(int argc, char **argv);
169
170extern void do_freefrag(int argc, char **argv);
171extern void do_filefrag(int argc, char *argv[]);
172
173/* util.c */
174extern time_t string_to_time(const char *arg);
175
176/* zap.c */
177extern void do_zap_block(int argc, char **argv);
178extern void do_block_dump(int argc, char **argv);