#
# 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_freefrag, "Report free space fragmentation",
	freefrag, e2freefrag;

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, "Initialize 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_dump_extents, "Dump extents information ",
	dump_extents, extents, ex;

request do_blocks, "Dump blocks used by an inode ",
	blocks;

request do_filefrag, "Report fragmentation information for an inode",
	filefrag;

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_copy_inode, "Copy the inode structure",
	copy_inode;

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_set_inode, "Set inode field",
	set_inode_field, sif;

request do_set_block_group_descriptor, "Set block group descriptor field",
	set_block_group, set_bg;

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_fallocate, "Allocate uninitialized blocks to an inode",
	fallocate;

request do_punch, "Punch (or truncate) blocks from an inode by deallocating them",
	punch, truncate;

request do_symlink, "Create a symbolic link",
	symlink;

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

request	do_dump_unused, "Dump unused blocks",
	dump_unused;

request do_set_current_time, "Set current time to use when setting filesystem fields",
	set_current_time;

request do_supported_features, "Print features supported by this version of e2fsprogs",
	supported_features;

request do_dump_mmp, "Dump MMP information",
	dump_mmp;

request do_set_mmp_value, "Set MMP value",
	set_mmp_value, smmp;

request do_extent_open, "Open inode for extent manipulation",
	extent_open, eo;

request do_zap_block, "Zap block: fill with 0, pattern, flip bits etc.",
	zap_block, zap;

request do_block_dump, "Dump contents of a block",
	block_dump, bdump, bd;

request do_list_xattr, "List extended attributes of an inode",
	ea_list;

request do_get_xattr, "Get an extended attribute of an inode",
	ea_get;

request do_set_xattr, "Set an extended attribute of an inode",
	ea_set;

request do_rm_xattr, "Remove an extended attribute of an inode",
	ea_rm;

request do_list_quota, "List quota",
	list_quota, lq;

request do_get_quota, "Get quota",
	get_quota, gq;

request do_idump, "Dump the inode structure in hex",
	inode_dump, idump, id;

request do_journal_open, "Open the journal",
	journal_open, jo;

request do_journal_close, "Close the journal",
	journal_close, jc;

request do_journal_write, "Write a transaction to the journal",
	journal_write, jw;

request do_journal_run, "Recover the journal",
	journal_run, jr;

end;

