13839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o# 23839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o# Copyright (C) 1993 Theodore Ts'o. This file may be redistributed 33839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o# under the terms of the GNU Public License. 43839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o# 53839e65723771b85975f4263102dd3ceec4523cTheodore Ts'ocommand_table debug_cmds; 63839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 73839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_show_debugfs_params, "Show debugfs parameters", 83839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o show_debugfs_params, params; 93839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 103839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_open_filesys, "Open a filesystem", 113839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o open_filesys, open; 123839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 1321c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'orequest do_close_filesys, "Close the filesystem", 143839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o close_filesys, close; 153839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 16e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrequest do_freefrag, "Report free space fragmentation", 17e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall freefrag, e2freefrag; 18e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 19d3aea7dc1bf155861573ae16160a703b03527ac9Theodore Ts'orequest do_features, "Set/print superblock features", 20d3aea7dc1bf155861573ae16160a703b03527ac9Theodore Ts'o feature, features; 21d3aea7dc1bf155861573ae16160a703b03527ac9Theodore Ts'o 2221c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'orequest do_dirty_filesys, "Mark the filesystem as dirty", 2321c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o dirty_filesys, dirty; 2421c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o 25d17ad1234d64e73b03f1d386778cfa0efb18bc85Theodore Ts'orequest do_init_filesys, "Initialize a filesystem (DESTROYS DATA)", 263839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o init_filesys; 273839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 283839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_show_super_stats, "Show superblock statistics", 293839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o show_super_stats, stats; 303839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 313839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_ncheck, "Do inode->name translation", 323839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o ncheck; 333839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 343839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_icheck, "Do block->inode translation", 353839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o icheck; 363839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 373839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_chroot, "Change root directory", 383839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o change_root_directory, chroot; 393839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 403839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_change_working_dir, "Change working directory", 413839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o change_working_directory, cd; 423839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 433839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_list_dir, "List directory", 443839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o list_directory, ls; 453839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 463839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_stat, "Show inode information ", 473839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o show_inode_info, stat; 483839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 49187cb623dc8085439d366dceb07bc2191da3c21eTheodore Ts'orequest do_dump_extents, "Dump extents information ", 50187cb623dc8085439d366dceb07bc2191da3c21eTheodore Ts'o dump_extents, extents, ex; 51187cb623dc8085439d366dceb07bc2191da3c21eTheodore Ts'o 52e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrequest do_blocks, "Dump blocks used by an inode ", 53e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall blocks; 54e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 55e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrequest do_filefrag, "Report fragmentation information for an inode", 56e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall filefrag; 57e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 583839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_link, "Create directory link", 593839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o link, ln; 603839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 613839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_unlink, "Delete a directory link", 623839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o unlink; 633839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 643839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_mkdir, "Create a directory", 653839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o mkdir; 663839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 673839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_rmdir, "Remove a directory", 683839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o rmdir; 693839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 703839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_rm, "Remove a file (unlink and kill_file, if appropriate)", 713839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o rm; 723839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 733839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_kill_file, "Deallocate an inode and its blocks", 743839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o kill_file; 753839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 763839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_clri, "Clear an inode's contents", 773839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o clri; 783839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 793839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_freei, "Clear an inode's in-use flag", 803839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o freei; 813839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 823839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_seti, "Set an inode's in-use flag", 833839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o seti; 843839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 853839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_testi, "Test an inode's in-use flag", 863839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o testi; 873839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 883839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_freeb, "Clear a block's in-use flag", 893839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o freeb; 903839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 913839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_setb, "Set a block's in-use flag", 923839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o setb; 933839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 943839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_testb, "Test a block's in-use flag", 953839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o testb; 963839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 973839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_modify_inode, "Modify an inode by structure", 983839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o modify_inode, mi; 993839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 1003839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_find_free_block, "Find free block(s)", 1013839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o find_free_block, ffb; 1023839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 1033839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_find_free_inode, "Find free inode(s)", 1043839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o find_free_inode, ffi; 1053839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 1063839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_print_working_directory, "Print current working directory", 1073839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o print_working_directory, pwd; 1083839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 1093839e65723771b85975f4263102dd3ceec4523cTheodore Ts'orequest do_expand_dir, "Expand directory", 1103839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o expand_dir, expand; 1113839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 11250e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'orequest do_mknod, "Create a special file", 11350e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o mknod; 11450e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o 1156f4a109706f51ad11b9fff0983c140ab62549d2fTheodore Ts'orequest do_lsdel, "List deleted inodes", 1166f4a109706f51ad11b9fff0983c140ab62549d2fTheodore Ts'o list_deleted_inodes, lsdel; 1176f4a109706f51ad11b9fff0983c140ab62549d2fTheodore Ts'o 118e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'orequest do_undel, "Undelete file", 119e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o undelete, undel; 120e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o 12150e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'orequest do_write, "Copy a file from your native filesystem", 12250e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o write; 12350e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o 1246f4a109706f51ad11b9fff0983c140ab62549d2fTheodore Ts'orequest do_dump, "Dump an inode out to a file", 1256f4a109706f51ad11b9fff0983c140ab62549d2fTheodore Ts'o dump_inode, dump; 1266f4a109706f51ad11b9fff0983c140ab62549d2fTheodore Ts'o 1276f4a109706f51ad11b9fff0983c140ab62549d2fTheodore Ts'orequest do_cat, "Dump an inode out to stdout", 1286f4a109706f51ad11b9fff0983c140ab62549d2fTheodore Ts'o cat; 1296f4a109706f51ad11b9fff0983c140ab62549d2fTheodore Ts'o 1302e8d40d562ec93d68505800a46c5b9dcc229264eTheodore Ts'orequest do_lcd, "Change the current directory on your native filesystem", 1312e8d40d562ec93d68505800a46c5b9dcc229264eTheodore Ts'o lcd; 1322e8d40d562ec93d68505800a46c5b9dcc229264eTheodore Ts'o 1332e8d40d562ec93d68505800a46c5b9dcc229264eTheodore Ts'orequest do_rdump, "Recursively dump a directory to the native filesystem", 1342e8d40d562ec93d68505800a46c5b9dcc229264eTheodore Ts'o rdump; 1352e8d40d562ec93d68505800a46c5b9dcc229264eTheodore Ts'o 136c6bd0c97e4dc42511015b9a20b3e35dcdc8fd411Theodore Ts'orequest do_set_super, "Set superblock value", 137c6bd0c97e4dc42511015b9a20b3e35dcdc8fd411Theodore Ts'o set_super_value, ssv; 138c6bd0c97e4dc42511015b9a20b3e35dcdc8fd411Theodore Ts'o 1397dec050a807eec171e29c9a7966347633a5992bfTheodore Ts'orequest do_set_inode, "Set inode field", 1401d3a95111820e3e8e79b2ae18ed04f050cd3f0cbTheodore Ts'o set_inode_field, sif; 1417dec050a807eec171e29c9a7966347633a5992bfTheodore Ts'o 142c7c1209efde0a2ec283a21f83262e25118abcf32Theodore Ts'orequest do_set_block_group_descriptor, "Set block group descriptor field", 143c7c1209efde0a2ec283a21f83262e25118abcf32Theodore Ts'o set_block_group, set_bg; 144c7c1209efde0a2ec283a21f83262e25118abcf32Theodore Ts'o 145da81e3fcfe075922e995a1c5f1efded5768d519aTheodore Ts'orequest do_logdump, "Dump the contents of the journal", 146da81e3fcfe075922e995a1c5f1efded5768d519aTheodore Ts'o logdump; 147da81e3fcfe075922e995a1c5f1efded5768d519aTheodore Ts'o 148df614db6ef79c767745b8154c26d69398b571605Theodore Ts'orequest do_htree_dump, "Dump a hash-indexed directory", 149df614db6ef79c767745b8154c26d69398b571605Theodore Ts'o htree_dump, htree; 150df614db6ef79c767745b8154c26d69398b571605Theodore Ts'o 151df614db6ef79c767745b8154c26d69398b571605Theodore Ts'orequest do_dx_hash, "Calculate the directory hash of a filename", 152df614db6ef79c767745b8154c26d69398b571605Theodore Ts'o dx_hash, hash; 153df614db6ef79c767745b8154c26d69398b571605Theodore Ts'o 154df614db6ef79c767745b8154c26d69398b571605Theodore Ts'orequest do_dirsearch, "Search a directory for a particular filename", 155df614db6ef79c767745b8154c26d69398b571605Theodore Ts'o dirsearch; 156df614db6ef79c767745b8154c26d69398b571605Theodore Ts'o 157b38cd283637dafff6b39d4b76bf76fa2789eb21fTheodore Ts'orequest do_bmap, "Calculate the logical->physical block mapping for an inode", 158b38cd283637dafff6b39d4b76bf76fa2789eb21fTheodore Ts'o bmap; 159b38cd283637dafff6b39d4b76bf76fa2789eb21fTheodore Ts'o 160e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrequest do_punch, "Punch (or truncate) blocks from an inode by deallocating them", 161e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall punch, truncate; 162e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 163e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrequest do_symlink, "Create a symbolic link", 164e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall symlink; 165e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 166becf36f6ace508fd091052b9e9bcdea192bfbc48Theodore Ts'orequest do_imap, "Calculate the location of an inode", 167becf36f6ace508fd091052b9e9bcdea192bfbc48Theodore Ts'o imap; 168becf36f6ace508fd091052b9e9bcdea192bfbc48Theodore Ts'o 169a5fdcd5946971a2bbbecf26269c667aa6bf73966Theodore Ts'orequest do_dump_unused, "Dump unused blocks", 170a5fdcd5946971a2bbbecf26269c667aa6bf73966Theodore Ts'o dump_unused; 171a5fdcd5946971a2bbbecf26269c667aa6bf73966Theodore Ts'o 172e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrequest do_set_current_time, "Set current time to use when setting filesystem fields", 1734efae606bf3159f2134fa29a5ad78fb9f6331f92Theodore Ts'o set_current_time; 1744efae606bf3159f2134fa29a5ad78fb9f6331f92Theodore Ts'o 17503efde8abe79c80ff369206d06d4f1e476b08f53Andreas Dilgerrequest do_supported_features, "Print features supported by this version of e2fsprogs", 17603efde8abe79c80ff369206d06d4f1e476b08f53Andreas Dilger supported_features; 17703efde8abe79c80ff369206d06d4f1e476b08f53Andreas Dilger 178e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrequest do_dump_mmp, "Dump MMP information", 179e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall dump_mmp; 180e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 181e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrequest do_set_mmp_value, "Set MMP value", 182e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall set_mmp_value, smmp; 183e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 184e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrequest do_extent_open, "Open inode for extent manipulation", 185e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall extent_open, eo; 186e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 187e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrequest do_zap_block, "Zap block: fill with 0, pattern, flip bits etc.", 188e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall zap_block, zap; 189e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 190e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrequest do_block_dump, "Dump contents of a block", 191e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall block_dump, bd; 192e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 1933839e65723771b85975f4263102dd3ceec4523cTheodore Ts'oend; 1943839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 195