#
# Copyright (C) 1993 Theodore Ts'o.  This file may be redistributed
# under the terms of the GNU Public License.
#
command_table debug_cmds;

request do_show_debugfs_params, "Show debugfs parameters",
	show_debugfs_params, params;

request do_open_filesys, "Open a filesystem",
	open_filesys, open;

request do_close_filesys, "Close the filesystem",
	close_filesys, close;

request do_features, "Set/print superblock features",
	feature, features;

request do_dirty_filesys, "Mark the filesystem as dirty",
	dirty_filesys, dirty;

request do_init_filesys, "Initalize a filesystem (DESTROYS DATA)",
	init_filesys;

request do_show_super_stats, "Show superblock statistics",
	show_super_stats, stats;

request do_ncheck, "Do inode->name translation",
	ncheck;

request do_icheck, "Do block->inode translation",
	icheck;

request do_chroot, "Change root directory",
	change_root_directory, chroot;

request do_change_working_dir, "Change working directory",
	change_working_directory, cd;

request do_list_dir, "List directory",
	list_directory, ls;

request do_stat, "Show inode information ",
	show_inode_info, stat;

request do_link, "Create directory link",
	link, ln;

request do_unlink, "Delete a directory link",
	unlink;

request do_mkdir, "Create a directory",
	mkdir;

request do_rmdir, "Remove a directory",
	rmdir;

request do_rm, "Remove a file (unlink and kill_file, if appropriate)",
	rm;

request do_kill_file, "Deallocate an inode and its blocks",
	kill_file;

request do_clri, "Clear an inode's contents",
	clri;

request do_freei, "Clear an inode's in-use flag",
	freei;

request do_seti, "Set an inode's in-use flag",
	seti;

request do_testi, "Test an inode's in-use flag",
	testi;

request do_freeb, "Clear a block's in-use flag",
	freeb;

request do_setb, "Set a block's in-use flag",
	setb;

request do_testb, "Test a block's in-use flag",
	testb;

request do_modify_inode, "Modify an inode by structure",
	modify_inode, mi;

request do_find_free_block, "Find free block(s)",
	find_free_block, ffb;

request do_find_free_inode, "Find free inode(s)",
	find_free_inode, ffi;

request	do_print_working_directory, "Print current working directory",
	print_working_directory, pwd; 

request	do_expand_dir, "Expand directory",
	expand_dir, expand;

request do_mknod, "Create a special file",
	mknod;

request do_lsdel, "List deleted inodes",
	list_deleted_inodes, lsdel;

request do_undel, "Undelete file",
	undelete, undel;

request do_write, "Copy a file from your native filesystem",
	write;

request do_dump, "Dump an inode out to a file",
	dump_inode, dump;

request do_cat, "Dump an inode out to stdout",
	cat;

request do_lcd, "Change the current directory on your native filesystem",
	lcd;

request do_rdump, "Recursively dump a directory to the native filesystem",
	rdump;

request do_set_super, "Set superblock value",
	set_super_value, ssv;

request do_logdump, "Dump the contents of the journal",
	logdump;

request do_htree_dump, "Dump a hash-indexed directory",
	htree_dump, htree;

request do_dx_hash, "Calculate the directory hash of a filename",
	dx_hash, hash;

request do_dirsearch, "Search a directory for a particular filename",
	dirsearch;

request do_bmap, "Calculate the logical->physical block mapping for an inode",
	bmap;

request do_imap, "Calculate the location of an inode",
	imap;

request	do_dump_unused, "Dump unused blocks",
	dump_unused;

end;

