#
# Restricted set of debugfs commands
#
# 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_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_testi, "Test an inode's in-use flag",
	testi;

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_lsdel, "List deleted inodes",
	list_deleted_inodes, lsdel;

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_supported_features, "Print features supported by this version of e2fsprogs",
	supported_features;

request do_dump_mmp, "Dump MMP information",
	dump_mmp;

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

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

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

end;
