.\" -*- nroff -*-
.\" Copyright 1993, 1994, 1995 by Theodore Ts'o.  All Rights Reserved.
.\" This file may be copied under the terms of the GNU Public License.
.\" 
.TH DEBUGFS 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
.SH NAME
debugfs \- ext2/ext3/ext4 file system debugger
.SH SYNOPSIS
.B debugfs
[
.B \-Vwci
]
[
.B \-b
blocksize
]
[
.B \-s
superblock
]
[
.B \-f 
cmd_file
]
[
.B \-R
request
]
[
.B \-d
data_source_device
]
[
device
]
.SH DESCRIPTION
The 
.B debugfs 
program is an interactive file system debugger. It can be used to
examine and change the state of an ext2, ext3, or ext4 file system.
.br
.I device
is the special file corresponding to the device containing the
file system (e.g /dev/hdXX).
.SH OPTIONS
.TP
.I \-w
Specifies that the file system should be opened in read-write mode.
Without this option, the file system is opened in read-only mode.
.TP
.I \-c
Specifies that the file system should be opened in catastrophic mode, in
which the inode and group bitmaps are not read initially.  This can be
useful for filesystems with significant corruption, but because of this,
catastrophic mode forces the filesystem to be opened read-only.
.TP
.I \-i
Specifies that 
.I device
represents an ext2 image file created by the
.B e2image
program.  Since the ext2 image file only contains the superblock, block
group descriptor, block and inode allocation bitmaps, and 
the inode table, many
.B debugfs
commands will not function properly.  
.B Warning:
no safety checks are in place, and 
.B debugfs 
may fail in interesting ways if commands such as
.IR ls ", " dump ", " 
etc. are tried without specifying the 
.I data_source_device
using the 
.I \-d
option.
.B debugfs 
is a debugging tool.  It has rough edges!
.TP
.I -d data_source_device
Used with the 
.I \-i
option, specifies that
.I data_source_device
should be used when reading blocks not found in the ext2 image file.
This includes data, directory, and indirect blocks.
.TP
.I -b blocksize
Forces the use of the given block size for the file system, rather than
detecting the correct block size as normal.
.TP
.I -s superblock
Causes the file system superblock to be read from the given block
number, instead of using the primary superblock (located at an offset of
1024 bytes from the beginning of the filesystem).  If you specify the
.I -s
option, you must also provide the blocksize of the filesystem via the
.I -b
option.
.TP
.I -f cmd_file
Causes 
.B debugfs
to read in commands from 
.IR cmd_file , 
and execute them.  When 
.B debugfs
is finished executing those commands, it will exit.
.TP 
.I -R request
Causes 
.B debugfs
to execute the single command 
.IR request ,
and then exit.
.TP
.I -V
print the version number of 
.B debugfs
and exit.
.SH SPECIFYING FILES
Many
.B debugfs
commands take a
.I filespec
as an argument to specify an inode (as opposed to a pathname) 
in the filesystem which is currently opened by 
.BR debugfs . 
The
.I filespec
argument may be specified in two forms.  The first form is an inode 
number surrounded by angle brackets, e.g., 
.IR <2> .
The second form is a pathname; if the pathname is prefixed by a forward slash
('/'), then it is interpreted relative to the root of the filesystem 
which is currently opened by 
.BR debugfs .
If not, the pathname is 
interpreted relative to the current working directory as maintained by 
.BR debugfs .  
This may be modified by using the 
.B debugfs
command
.IR cd .
.\" 
.\"
.\"
.SH COMMANDS
This is a list of the commands which 
.B debugfs
supports.
.TP
.I bmap filespec logical_block
Print the physical block number corresponding to the logical block number
.I logical_block
in the inode
.IR filespec .
.TP
.I cat filespec
Dump the contents of the inode 
.I filespec
to stdout.
.TP
.I cd filespec
Change the current working directory to 
.IR filespec .
.TP
.I chroot filespec
Change the root directory to be the directory 
.IR filespec .
.TP
.I close [-a]
Close the currently open file system.  If the 
.I -a
option is specified, write out any changes to the superblock and block
group descriptors to all of the backup superblocks, not just to the
master superblock.
.TP
.I clri file
Clear the contents of the inode 
.IR file .
.TP
.I dump [-p] filespec out_file
Dump the contents of the inode 
.I filespec
to the output file 
.IR out_file .  
If the 
.I -p 
option is given set the owner, group and permissions information on 
.I out_file 
to match 
.IR filespec .
.TP
.I dump_extents [-n] [-l] filespec
Dump the the extent tree of the inode
.IR filespec .
The 
.I -n
flag will cause
.I dump_extents
to only display the interior nodes in the extent tree.   The
.I  -l
flag cause
.I dump_extents
to only display the leaf nodes in the extent tree.
.IP
(Please note that the length and range of blocks for the last extent in
an interior node is an estimate by the extents library functions, and is
not stored in file esystem data structures.   Hence, the values displayed
may not necessarily by accurate and does not indicate a problem or 
corruption in the file system.)
.TP
.I expand_dir filespec
Expand the directory
.IR filespec .
.TP
.I feature [fs_feature] [-fs_feature] ...
Set or clear various filesystem features in the superblock.  After setting
or clearing any filesystem features that were requested, print the current
state of the filesystem feature set.
.TP
.I find_free_block [count [goal]]
Find the first 
.I count
free blocks, starting from
.I goal
and allocate it.
.TP
.I find_free_inode [dir [mode]]
Find a free inode and allocate it.  If present, 
.I dir
specifies the inode number of the directory 
which the inode is to be located.  The second 
optional argument
.I mode
specifies the permissions of the new inode.  (If the directory bit is set
on the mode, the allocation routine will function differently.)
.TP
.I freeb block [count]
Mark the block number
.I block
as not allocated.
If the optional argument 
.I count 
is present, then 
.I count
blocks starting at block number
.I block
will be marked as not allocated.
.TP
.I freei filespec
Free the inode specified by 
.IR filespec .
.TP
.I help
Print a list of commands understood by 
.BR debugfs (8).
.TP
.I icheck block ...
Print a listing of the inodes which use the one or more blocks specified
on the command line.
.TP
.I imap filespec
Print the location of the inode data structure (in the inode table) 
of the inode
.IR filespec .
.TP
.I init_filesys device blocksize
Create an ext2 file system on
.I device
with device size
.IR blocksize .
Note that this does not fully initialize all of the data structures; 
to do this, use the 
.BR mke2fs (8)
program.  This is just a call to the low-level library, which sets up
the superblock and block descriptors.
.TP
.I kill_file filespec
Deallocate the inode 
.I filespec
and its blocks.  Note that this does not remove any directory
entries (if any) to this inode.  See the 
.BR rm (1)
command if you wish to unlink a file.
.TP
.I lcd directory
Change the current working directory of the
.B debugfs
process to
.I directory
on the native filesystem.
.TP
.I ln filespec dest_file
Create a link named 
.I dest_file
which is a link to 
.IR filespec .
Note this does not adjust the inode reference counts.
.TP
.I logdump [-acs] [-b<block>] [-i<filespec>] [-f<journal_file>] [output_file]
Dump the contents of the ext3 journal.  By default, the journal inode as
specified in the superblock.  However, this can be overridden with the 
.I \-i
option, which uses an inode specifier to specify the journal to be
used.  A file containing journal data can be specified using the
.I \-f
option.   Finally, the 
.I \-s
option utilizes the backup information in the superblock to locate the
journal.
.IP
The 
.I \-a
option causes the 
.I logdump
program to print the contents of all of the descriptor blocks.
The 
.I \-b
option causes 
.I logdump
to print all journal records that are refer to the specified block. 
The 
.I \-c
option will print out the contents of all of the data blocks selected by
the 
.I \-a
and 
.I \-b
options.
.TP
.I ls [-l] [-d] [-p] filespec
Print a listing of the files in the directory
.IR filespec .
The 
.I \-l
flag will list files using a more verbose format.
The
.I \-d
flag will list deleted entries in the directory.
The 
.I \-p
flag will list the files in a format which is more easily parsable by
scripts, as well as making it more clear when there are spaces or other
non-printing characters at the end of filenames.
.TP
.I modify_inode filespec
Modify the contents of the inode structure in the inode
.IR filespec .
.TP
.I mkdir filespec
Make a directory.
.TP
.I mknod filespec [p|[[c|b] major minor]]
Create a special device file (a named pipe, character or block device).
If a character or block device is to be made, the 
.I major
and
.I minor
device numbers must be specified.
.TP
.I ncheck inode_num ...
Take the requested list of inode numbers, and print a listing of pathnames
to those inodes.
.TP
.I open [-w] [-e] [-f] [-i] [-c] [-b blocksize] [-s superblock] device
Open a filesystem for editing.  The 
.I -f 
flag forces the filesystem to be opened even if there are some unknown 
or incompatible filesystem features which would normally 
prevent the filesystem from being opened.  The
.I -e
flag causes the filesystem to be opened in exclusive mode.  The
.IR -b ", " -c ", " -i ", " -s ", and " -w
options behave the same as the command-line options to 
.BR debugfs .
.TP
.I pwd
Print the current working directory.
.TP
.I quit
Quit
.B debugfs
.TP
.I rdump directory destination
Recursively dump
.I directory
and all its contents (including regular files, symbolic links, and other
directories) into the named
.I destination
which should be an existing directory on the native filesystem.
.TP
.I rm pathname
Unlink 
.IR pathname .
If this causes the inode pointed to by 
.I pathname
to have no other references, deallocate the file.  This command functions
as the unlink() system call.
.I 
.TP
.I rmdir filespec
Remove the directory
.IR filespec .
.TP
.I setb block [count]
Mark the block number
.I block
as allocated.
If the optional argument 
.I count 
is present, then 
.I count
blocks starting at block number
.I block
will be marked as allocated.
.TP
.I set_block_group bgnum field value
Modify the block group descriptor specified by
.I bgnum
so that the block group descriptor field
.I field
has value
.I value.
.TP
.I seti filespec
Mark inode 
.I filespec
as in use in the inode bitmap.
.TP
.I set_inode_field filespec field value
Modify the inode specified by 
.I filespec
so that the inode field
.I field
has value 
.I value.
The list of valid inode fields which can be set via this command 
can be displayed by using the command:
.B set_inode_field -l
.TP
.I set_super_value field value
Set the superblock field
.I field
to 
.I value.
The list of valid superblock fields which can be set via this command 
can be displayed by using the command:
.B set_super_value -l
.TP
.I show_super_stats [-h]
List the contents of the super block and the block group descriptors.  If the
.I -h
flag is given, only print out the superblock contents.
.TP
.I stat filespec
Display the contents of the inode structure of the inode
.IR filespec .
.TP
.I testb block [count]
Test if the block number
.I block
is marked as allocated in the block bitmap.
If the optional argument 
.I count 
is present, then 
.I count
blocks starting at block number
.I block
will be tested.
.TP
.I testi filespec
Test if the inode 
.I filespec
is marked as allocated in the inode bitmap.
.TP
.I undel <inode num> [pathname]
Undelete the specified inode number (which must be surrounded by angle
brackets) so that it and its blocks are marked in use, and optionally
link the recovered inode to the specified pathname.  The 
.B e2fsck
command should always be run after using the 
.B undel
command to recover deleted files.
.IP
Note that if you are recovering a large number of deleted files, linking
the inode to a directory may require the directory to be expanded, which
could allocate a block that had been used by one of the
yet-to-be-undeleted files.  So it is safer to undelete all of the 
inodes without specifying a destination pathname, and then in a separate
pass, use the debugfs
.B link
command to link the inode to the destination pathname, or use 
.B e2fsck
to check the filesystem and link all of the recovered inodes to the
lost+found directory.
.TP
.I unlink pathname
Remove the link specified by 
.I pathname 
to an inode.  Note this does not adjust the inode reference counts.
.TP
.I write source_file out_file
Create a file in the filesystem named
.IR out_file ,
and copy the contents of
.I source_file
into the destination file.
.SH ENVIRONMENT VARIABLES
.TP
.B DEBUGFS_PAGER, PAGER
The
.BR debugfs (8)
program always pipes the output of the some commands through a
pager program.  These commands include: 
.IR show_super_stats ,
.IR list_directory ,
.IR show_inode_info ,
.IR list_deleted_inodes ,
and
.IR htree_dump .
The specific pager can explicitly specified by the
.B DEBUGFS_PAGER
environment variable, and if it is not set, by the
.B PAGER
environment variable.  
.IP
Note that since a pager is always used, the 
.BR less (1)
pager is not particularly appropriate, since it clears the screen before
displaying the output of the command and clears the output the screen
when the pager is exited.  Many users prefer to use the 
.BR less (1)
pager for most purposes, which is why the 
.B DEBUGFS_PAGER 
environment variable is available to override the more general
.B PAGER
environment variable.
.SH AUTHOR
.B debugfs
was written by Theodore Ts'o <tytso@mit.edu>.
.SH SEE ALSO
.BR dumpe2fs (8),
.BR tune2fs (8),
.BR e2fsck (8),
.BR mke2fs (8)
