2 .\" Copyright 1993, 1994, 1995 by Theodore Ts'o. All Rights Reserved.
3 .\" This file may be copied under the terms of the GNU Public License.
5 .TH DEBUGFS 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
7 debugfs \- ext2/ext3/ext4 file system debugger
39 program is an interactive file system debugger. It can be used to
40 examine and change the state of an ext2, ext3, or ext4 file system.
43 is the special file corresponding to the device containing the
44 file system (e.g /dev/hdXX).
48 Specifies that the file system should be opened in read-write mode.
49 Without this option, the file system is opened in read-only mode.
52 Specifies that the file system should be opened in catastrophic mode, in
53 which the inode and group bitmaps are not read initially. This can be
54 useful for filesystems with significant corruption, but because of this,
55 catastrophic mode forces the filesystem to be opened read-only.
60 represents an ext2 image file created by the
62 program. Since the ext2 image file only contains the superblock, block
63 group descriptor, block and inode allocation bitmaps, and
66 commands will not function properly.
68 no safety checks are in place, and
70 may fail in interesting ways if commands such as
72 etc. are tried without specifying the
78 is a debugging tool. It has rough edges!
80 .I -d data_source_device
83 option, specifies that
85 should be used when reading blocks not found in the ext2 image file.
86 This includes data, directory, and indirect blocks.
89 Forces the use of the given block size for the file system, rather than
90 detecting the correct block size as normal.
93 Causes the file system superblock to be read from the given block
94 number, instead of using the primary superblock (located at an offset of
95 1024 bytes from the beginning of the filesystem). If you specify the
97 option, you must also provide the blocksize of the filesystem via the
104 to read in commands from
106 and execute them. When
108 is finished executing those commands, it will exit.
113 to open the device using Direct I/O, bypassing the buffer cache. Note
114 that some Linux devices, notably device mapper as of this writing, do
115 not support Direct I/O.
120 to execute the single command
125 print the version number of
133 as an argument to specify an inode (as opposed to a pathname)
134 in the filesystem which is currently opened by
138 argument may be specified in two forms. The first form is an inode
139 number surrounded by angle brackets, e.g.,
141 The second form is a pathname; if the pathname is prefixed by a forward slash
142 ('/'), then it is interpreted relative to the root of the filesystem
143 which is currently opened by
145 If not, the pathname is
146 interpreted relative to the current working directory as maintained by
148 This may be modified by using the
156 This is a list of the commands which
161 Print the blocks used by the inode
165 .I bmap filespec logical_block
166 Print the physical block number corresponding to the logical block number
171 .I block_dump [-f out_file] block_num
172 Dump the contents of a block, optionally to
176 Dump the contents of the inode
181 Change the current working directory to
185 Change the root directory to be the directory
189 Close the currently open file system. If the
191 option is specified, write out any changes to the superblock and block
192 group descriptors to all of the backup superblocks, not just to the
196 Clear the contents of the inode
199 .I dirsearch filespec filename
205 .I dump [-p] filespec out_file
206 Dump the contents of the inode
212 option is given set the owner, group and permissions information on
218 Display the multiple-mount protection (mmp) field values.
220 .I dx_hash [-h hash_alg] [-s hash_seed] filename
221 Calculate the directory hash of
223 The hash algorithm specified with
225 may be "legacy" "half_md4" or "tea".
226 The hash seed specified with
228 must be in UUID format.
230 .I dump_extents [-n] [-l] filespec
231 Dump the the extent tree of the inode
237 to only display the interior nodes in the extent tree. The
241 to only display the leaf nodes in the extent tree.
243 (Please note that the length and range of blocks for the last extent in
244 an interior node is an estimate by the extents library functions, and is
245 not stored in filesystem data structures. Hence, the values displayed
246 may not necessarily by accurate and does not indicate a problem or
247 corruption in the file system.)
249 .I expand_dir filespec
253 .I feature [fs_feature] [-fs_feature] ...
254 Set or clear various filesystem features in the superblock. After setting
255 or clearing any filesystem features that were requested, print the current
256 state of the filesystem feature set.
258 .I filefrag [-dvr] filespec
259 Print the number of contiguous extents in
263 is a directory and the
265 option is not specified,
267 will print the number of contiguous extents for each file in
272 print a tabular listing of the contiguous extents in the
277 to do a recursive listing of the directory.
279 .I find_free_block [count [goal]]
282 free blocks, starting from
286 .I find_free_inode [dir [mode]]
287 Find a free inode and allocate it. If present,
289 specifies the inode number of the directory
290 which the inode is to be located. The second
293 specifies the permissions of the new inode. (If the directory bit is set
294 on the mode, the allocation routine will function differently.)
296 .I freeb block [count]
297 Mark the block number
300 If the optional argument
304 blocks starting at block number
306 will be marked as not allocated.
308 .I freefrag [-c chunk_kb ]
309 Report free space fragmentation on the currently open file system.
312 option is specified then the filefrag command will print how many free
315 can be found in the file system. The chunk size must be a power of two
316 and be larger than the file system block size.
318 .I freei filespec [num]
319 Free the inode specified by
323 is specified, also clear num-1 inodes after the specified inode.
326 Print a list of commands understood by
329 .I htree_dump filespec
330 Dump the hash-indexed directory
332 showing its tree structure.
335 Print a listing of the inodes which use the one or more blocks specified
339 Print the location of the inode data structure (in the inode table)
343 .I init_filesys device blocksize
344 Create an ext2 file system on
348 Note that this does not fully initialize all of the data structures;
351 program. This is just a call to the low-level library, which sets up
352 the superblock and block descriptors.
354 .I kill_file filespec
357 and its blocks. Note that this does not remove any directory
358 entries (if any) to this inode. See the
360 command if you wish to unlink a file.
363 Change the current working directory of the
367 on the native filesystem.
369 .I ln filespec dest_file
374 Note this does not adjust the inode reference counts.
376 .I logdump [-acs] [-b<block>] [-i<filespec>] [-f<journal_file>] [output_file]
377 Dump the contents of the ext3 journal. By default, the journal inode as
378 specified in the superblock. However, this can be overridden with the
380 option, which uses an inode specifier to specify the journal to be
381 used. A file containing journal data can be specified using the
385 option utilizes the backup information in the superblock to locate the
392 program to print the contents of all of the descriptor blocks.
397 to print all journal records that are refer to the specified block.
400 option will print out the contents of all of the data blocks selected by
407 .I ls [-l] [-d] [-p] filespec
408 Print a listing of the files in the directory
412 flag will list files using a more verbose format.
415 flag will list deleted entries in the directory.
418 flag will list the files in a format which is more easily parsable by
419 scripts, as well as making it more clear when there are spaces or other
420 non-printing characters at the end of filenames.
422 .I modify_inode filespec
423 Modify the contents of the inode structure in the inode
429 .I mknod filespec [p|[[c|b] major minor]]
430 Create a special device file (a named pipe, character or block device).
431 If a character or block device is to be made, the
435 device numbers must be specified.
437 .I ncheck [-c] inode_num ...
438 Take the requested list of inode numbers, and print a listing of pathnames
441 flag will enable checking the file type information in the directory
442 entry to make sure it matches the inode's type.
444 .I open [-w] [-e] [-f] [-i] [-c] [-D] [-b blocksize] [-s superblock] device
445 Open a filesystem for editing. The
447 flag forces the filesystem to be opened even if there are some unknown
448 or incompatible filesystem features which would normally
449 prevent the filesystem from being opened. The
451 flag causes the filesystem to be opened in exclusive mode. The
452 .IR -b ", " -c ", " -i ", " -s ", " -w ", and " -D
453 options behave the same as the command-line options to
456 .I punch filespec start_blk [end_blk]
457 Delete the blocks in the inode ranging from
463 is omitted then this command will function as a truncate command; that
464 is, all of the blocks starting at
466 through to the end of the file will be deallocated.
468 .I symlink filespec target
469 Make a symbolic link.
472 Print the current working directory.
478 .I rdump directory destination
481 and all its contents (including regular files, symbolic links, and other
482 directories) into the named
484 which should be an existing directory on the native filesystem.
489 If this causes the inode pointed to by
491 to have no other references, deallocate the file. This command functions
492 as the unlink() system call.
499 .I setb block [count]
500 Mark the block number
503 If the optional argument
507 blocks starting at block number
509 will be marked as allocated.
511 .I set_block_group bgnum field value
512 Modify the block group descriptor specified by
514 so that the block group descriptor field
519 .I seti filespec [num]
522 as in use in the inode bitmap. If
524 is specified, also set num-1 inodes after the specified inode.
526 .I set_inode_field filespec field value
527 Modify the inode specified by
529 so that the inode field
533 The list of valid inode fields which can be set via this command
534 can be displayed by using the command:
535 .B set_inode_field -l
537 .I set_mmp_value field value
538 Modify the multiple-mount protection (mmp) data so that the
543 The list of valid mmp fields which can be set via this command
544 can be displayed by using the command:
547 .I set_super_value field value
548 Set the superblock field
552 The list of valid superblock fields which can be set via this command
553 can be displayed by using the command:
554 .B set_super_value -l
556 .I show_super_stats [-h]
557 List the contents of the super block and the block group descriptors. If the
559 flag is given, only print out the superblock contents.
562 Display the contents of the inode structure of the inode
565 .I testb block [count]
566 Test if the block number
568 is marked as allocated in the block bitmap.
569 If the optional argument
573 blocks starting at block number
580 is marked as allocated in the inode bitmap.
582 .I undel <inode num> [pathname]
583 Undelete the specified inode number (which must be surrounded by angle
584 brackets) so that it and its blocks are marked in use, and optionally
585 link the recovered inode to the specified pathname. The
587 command should always be run after using the
589 command to recover deleted files.
591 Note that if you are recovering a large number of deleted files, linking
592 the inode to a directory may require the directory to be expanded, which
593 could allocate a block that had been used by one of the
594 yet-to-be-undeleted files. So it is safer to undelete all of the
595 inodes without specifying a destination pathname, and then in a separate
596 pass, use the debugfs
598 command to link the inode to the destination pathname, or use
600 to check the filesystem and link all of the recovered inodes to the
601 lost+found directory.
604 Remove the link specified by
606 to an inode. Note this does not adjust the inode reference counts.
608 .I write source_file out_file
609 Create a file in the filesystem named
611 and copy the contents of
613 into the destination file.
615 .I zap_block [-f file] [-o offset] [-l length] [-p pattern] block_num
616 Zero, or pattern-fill, portions of a block within a file or
617 within the filesystem.
619 .I zap_block [-f file] [-b bit] block_num
620 Bit-flip portions of a block within a file or
621 within the filesystem.
622 .SH ENVIRONMENT VARIABLES
624 .B DEBUGFS_PAGER, PAGER
627 program always pipes the output of the some commands through a
628 pager program. These commands include:
629 .IR show_super_stats ,
631 .IR show_inode_info ,
632 .IR list_deleted_inodes ,
635 The specific pager can explicitly specified by the
637 environment variable, and if it is not set, by the
639 environment variable.
641 Note that since a pager is always used, the
643 pager is not particularly appropriate, since it clears the screen before
644 displaying the output of the command and clears the output the screen
645 when the pager is exited. Many users prefer to use the
647 pager for most purposes, which is why the
649 environment variable is available to override the more general
651 environment variable.
654 was written by Theodore Ts'o <tytso@mit.edu>.