unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (HP-UX-11.11)
Page:
Section:
Apropos / Subsearch:
optional field



 fsdb_vxfs(1M)						       fsdb_vxfs(1M)




 NAME
      fsdb - VxFS file system debugger

 SYNOPSIS
      /usr/sbin/fsdb [-F vxfs] [-z inumber] special

 DESCRIPTION
      fsdb can analyze VxFS file system problems or repair a damaged VxFS
      file system after a crash.  A special device special specifies the
      file system to debug.  The fsdb command is intended for experienced
      users only.

      fsdb can convert block and inumbers into their corresponding disk
      addresses.  In addition, mnemonic offsets allow access to different
      parts of an inode.  These greatly simplify the process of correcting
      control block entries or descending the file system tree.

      By default, numbers are considered decimal.  You must prefix octal
      numbers with 0, and prefix hexadecimal numbers with 0x.  When using
      hexadecimal numbers, it is preferable to follow the number with a
      space, because several commands are letters that are also hexadecimal
      digits.  In this document a pound sign (#) indicates that a number is
      to be specified.

      fsdb reads a block at a time and works with raw and block I/O.  All
      I/O is unbuffered, so changes made to the file system are immediate
      and changes made by other processes or by the kernel are immediately
      seen by fsdb.

    Options
	   -F vxfs	  Specify the VxFS file-system type.

	   -z inumber	  Clear the inode identified by inumber (non-
			  interactive).	 Multiple -z options accumulate.

      The following symbols are recognized by the fsdb command:

	   h[mod|print]	  Print summary of commands that display
			  [modify|format] the file system.

	   ?[mod|print]	  Print summary of commands that display
			  [modify|format] the file system.

	   help[mod|print]
			  Print summary of commands that display
			  [modify|format] the file system.

	   !		  Escape to shell.

	   |		  Pipe output of fsdb to a shell command.




 Hewlett-Packard Company	    - 1 -   HP-UX Release 11i: November 2000






 fsdb_vxfs(1M)						       fsdb_vxfs(1M)




	   q		  Quit.

	   string	  A character string.  Inside a character string, a
			  NULL character may be specified with ``\0''; a
			  double quote may be specified with ``\"''; and a
			  backslash may be specified with ``\\ ''.

	   + - * / %	  Add, subtract, multiply, divide, and modulus.

	   =		  Assignment

	   i		  An inode in the primary inode list.

	   ai		  An inode in the attribute inode list.

	   au		  An allocation unit.

	   b		  A block.

	   im		  The immediate data area of an inode.	Small
			  directories and symbolic link files (96 bytes or
			  less) are stored directly in the inode itself, in
			  the area normally occupied by data block numbers
			  and extent sizes.

	   attr		  An attribute inode.

	   cdb		  Current directory block.

	   d		  A directory entry.

	   a		  An inode address entry.

	   B		  A byte.

	   H		  A half-word (2 bytes)

	   W		  A word (4 bytes)

	   D		  A double-word (8 bytes)

	   p		  General print facility

	   calc		  Simple calculator and base converter

	   find		  Find a matching pattern in the file system

	   fset		  A fileset.

	   iau		  An inode allocation unit in the primary inode
			  list.



 Hewlett-Packard Company	    - 2 -   HP-UX Release 11i: November 2000






 fsdb_vxfs(1M)						       fsdb_vxfs(1M)




	   aiau		  An inode allocation unit in the attribute inode
			  list.

	   cut		  The current usage table.

	   olt		  The object location table.

	   mapi		  Map logical file offset to an inode extent.

	   reset	  Reset device.

      The print facility recognizes the following print formats:

	   S		  Print as a super-block.

	   A		  Print as an allocation-unit header.

	   AS		  Print as an auxiliary super-block.

	   L		  Print as intent-log records.

	   I		  Print as inodes.

	   T		  Print as typed extent descriptors.

	   dent		  Print as directory entries.

	   db		  Print as a directory block.

	   dh		  Print as a directory header.

	   o		  Print as octal words.

	   oB oH oW oD	  Print as octal bytes, half-words, words, or
			  double-words.

	   x		  Print as hexadecimal words.

	   xB xH xW xD	  Print as hexadecimal bytes, half-words, words, or
			  double-words.

	   e		  Print as decimal words.

	   eB eH eW eD	  Print as decimal bytes, half-words, words, or
			  double-words.

	   c		  Print as characters.

	   F		  Print as fileset headers.





 Hewlett-Packard Company	    - 3 -   HP-UX Release 11i: November 2000






 fsdb_vxfs(1M)						       fsdb_vxfs(1M)




	   C		  Print as current usage table entries.

	   IA		  Print as an inode allocation unit header.

	   oltext	  Print as an object location table extent.

	   Q		  Print as a BSD quota record.

	   DV		  Print as a device record.

      Changes to inode fields may be made symbolically.	 The following
      symbols represent inode fields:

	   md		  Inode mode field

	   ln		  Inode link count field

	   uid		  Inode user ID Number field

	   gid		  Inode group ID Number field

	   szlo		  Low-order word of inode file size field

	   szhi		  High-order word of inode file size field

	   sz		  Inode file size field

	   de#		  Inode direct extent data block numbers (0 - 9)

	   des#		  Inode direct extent sizes (0 - 9)

	   ie#		  Inode indirect extent data block numbers (0 - 1)

	   ies		  Inode indirect extent size

	   at		  Inode access time field (seconds)

	   ats		  Inode access time field (microseconds).

	   ct		  Inode change time field (seconds).

	   cts		  Inode change time field (microseconds).

	   mt		  Inode modification time field (seconds).

	   mts		  Inode modification time field (microseconds).

	   af		  Inode allocation flags field.

	   gen		  Inode generation count field.




 Hewlett-Packard Company	    - 4 -   HP-UX Release 11i: November 2000






 fsdb_vxfs(1M)						       fsdb_vxfs(1M)




	   org		  Inode mapping type field.

	   fe		  Inode fixed extent size field.

	   bl		  Inode blocks held field.

	   eopflg	  Inode extended operation flag field.

	   eopdat	  Inode extended operation data field.

	   rdev		  If device, inode device number.

	   maj		  If device, inode major number.

	   min		  If device, inode minor number.

	   pd		  If directory, inode parent directory.

	   res		  If regular file, inode reservation.

	   verhi	  Inode high-order word of serial number.

	   verlo	  Inode low-order word of serial number.

	   fsindex	  Referencing fileset ID.

	   matching	  Inode number of matching inode.

	   iano		  Indirect attribute inode.

      Changes to directory block fields may be made symbolically.  The
      following symbols represent directory block fields:

	   tfree	  Total free space (only if in a data block).

	   hash#	  Hash chain start (0 through  31, only if in a data
			  block).

	   d#		  Directory entry (variable number of entries).

	   nhash	  Number of hash chains.

      Changes to directory entry fields may be made symbolically.  The
      following symbols represent directory entry fields:

	   ino		  Inode number

	   nm		  Entry name

	   nmlen	  Name length




 Hewlett-Packard Company	    - 5 -   HP-UX Release 11i: November 2000






 fsdb_vxfs(1M)						       fsdb_vxfs(1M)




	   reclen	  Record length (only if in a data block)

	   hnext	  Name hash next (only if in a data block)

      It is best to separate each token on a command line with a space.
      Although the command parser does not require element separation, there
      is no ambiguity in the command language if each token is separated
      with a space.  For example, the command 0x23b b sets the current
      position to block 0x23b hexadecimal.  The command 0x23bb is invalid,
      because the command is parsed as simply a hexadecimal number.  The
      command 23b positions to block 23 decimal, since the command is not
      ambiguous.

      You can separate commands with new lines.	 You can put multiple
      commands on one line and separate them with a dot (.) or a semicolon
      (;) If multiple commands are placed on one line, generally only the
      last command displays results.  This allows positioning commands to be
      followed by printing commands or change commands without intermediate
      printing.

      fsdb maintains several positions in the file system:

	   +  current position

	   +  current primary-inode position (i)

	   +  current attribute-inode position (ai)

	   +  current inode type (i or ai)

	   +  current fileset-header position (fset)

	   +  current allocation-unit position (au)

	   +  current primary-inode allocation-unit (iau) position

	   +  current inode allocation-unit type (iau or aiau)

	   +  current attribute-inode allocation-unit (aiau) position

      These are used by various fsdb commands.	(The au positions are only
      supported on the Version 2 disk layout.)

      The following commands are supported:

	   # B|H|W|D	  Set the current position in the file system to the
			  specified offset in bytes, half-words, words, or
			  double-words.	 If it is the last command on a
			  line, print the byte, half-word, word, or double-
			  words in hexadecimal.




 Hewlett-Packard Company	    - 6 -   HP-UX Release 11i: November 2000






 fsdb_vxfs(1M)						       fsdb_vxfs(1M)




	   +|- # B|H|W|D  Set the current position to the specified relative
			  offset in bytes, half-words, words, or double-
			  words.  If it is the last command on a line, print
			  the byte, half-word, word, or double-words in
			  hexadecimal.

	   # au		  Set the current position in the file system to the
			  specified allocation unit (au) position.  Set the
			  current allocation unit position to the resulting
			  offset.  If it is the last command on a line,
			  print the allocation unit header.

	   +|- # au	  Set the current position in the file system to the
			  specified position relative to the current
			  allocation unit (au) position.  Set the current
			  allocation unit position to the resulting offset.
			  If it is the last command on a line, print the
			  allocation unit header.

	   au		  Set the current position in the file system to the
			  current allocation unit position.  If it is the
			  last command on a line, print the allocation unit
			  header.

	   # b		  Set the current position in the file system to the
			  specified offset in blocks.  Set the current block
			  position to the resulting offset.  The block size
			  is the block size of the file system.	 If it is
			  the last command on a line, print the first word
			  in the block in hexadecimal.

	   +|- # b	  Set the current position to specified relative
			  offset in blocks.  Set the current block position
			  to the resulting offset.  If it is the last
			  command on a line, print the first word in the
			  block in hexadecimal.

	   b		  Set the current position to current block position
			  (the block specified by the last [+|-] # b
			  operation).  If it is the last command on a line,
			  print the first word in the block in hexadecimal.

	   cut		  Set the current position to the current usage
			  table (cut).	If it is the last command on a line,
			  print the first current usage table entry.

	   dev		  Set the current position to the primary device's
			  configuration record.	 If it is the last command
			  on a line, print the device-configuration record.





 Hewlett-Packard Company	    - 7 -   HP-UX Release 11i: November 2000






 fsdb_vxfs(1M)						       fsdb_vxfs(1M)




	   # fset	  Set the current position in the file system to the
			  fileset header entry for the specified fileset
			  index.  Set the current fileset position to the
			  resulting offset.  If it is the last command on a
			  line, print the specified fileset header.

	   +|- # fset	  Set the current position in the file system to the
			  fileset header entry for the specified position
			  relative to the current fileset position.  Set the
			  current fileset position to resulting offset.	 If
			  it is the last command on a line, print the
			  specified fileset header.

	   fset		  Set the current position in the file system to the
			  current fileset position.  If it is the last
			  command on a line, print the fileset header for
			  the current fileset.

	   # aiau	  Set the current position in the file system to the
			  specified attribute inode allocation unit (aiau)
			  in a fileset. Set the current attribute inode
			  allocation unit position to the resulting offset.
			  If it is the last command on a line, print the
			  attribute inode allocation unit header.

	   +|- # aiau	  Set the current position in the file system to the
			  specified position relative to the current
			  attribute inode allocation unit (aiau) position.
			  Set the current attribute inode allocation unit
			  position to the resulting offset.  If it is the
			  last command on a line, print the attribute inode
			  allocation unit header.

	   aiau		  Set the current position in the file system to the
			  current attribute inode allocation unit (aiau)
			  position.  If it is the last command on a line,
			  print the attribute inode allocation unit header.

	   # iau	  Set the current position in the file system to the
			  specified inode allocation unit (iau) in a
			  fileset.  Set the current inode allocation unit
			  position to the resulting offset.  If it is the
			  last command on a line, print the inode allocation
			  unit header.

	   +|- # iau	  Set the current position in the file system to the
			  specified position relative to the current inode
			  allocation unit (iau) position.  Set the current
			  inode allocation unit position to the resulting
			  offset.  If it is the last command on a line,
			  print the inode allocation unit header.



 Hewlett-Packard Company	    - 8 -   HP-UX Release 11i: November 2000






 fsdb_vxfs(1M)						       fsdb_vxfs(1M)




	   iau		  Set the current position in the file system to the
			  current inode allocation unit (iau) position.	 If
			  it is the last command on a line, print the inode
			  allocation unit header.

	   # ai		  Set the current position in the current fileset to
			  the ilist entry for the specified attribute inode.
			  Set the current attribute inode position to the
			  resulting offset.  If it is the last command on a
			  line, print the ilist entry for the inode.

	   +|- # ai	  Set the current position in the current fileset to
			  the ilist entry for the specified relative
			  attribute inode.  Set the current attribute inode
			  position to the resulting offset.  If it is the
			  last command on a line, print the ilist entry for
			  the inode.

	   ai		  Set the current position in the current fileset to
			  the current attribute inode position.	 If it is
			  the last command on a line, print the ilist entry
			  for the inode.

	   # i		  Set the current position in the current fileset to
			  the ilist entry for the specified inode.  Set the
			  current inode position to the resulting offset.
			  If it is the last command on a line, print the
			  ilist entry for the inode.

	   +|- # i	  Set the current position in the current fileset to
			  the ilist entry for the specified relative inode.
			  Set the current inode position to the resulting
			  offset.  If it is the last command on a line,
			  print the ilist entry for the inode.

	   i		  Set the current position in the current fileset to
			  the current inode position.  If it is the last
			  command on a line, print the ilist entry for the
			  inode.

	   a#		  Set the current position to specified offset in
			  blocks specified by the inode address #.
			  Addresses 0 through 9 are for direct extents ( de
			  ).  Addresses 10-11 are for indirect extents ( ie
			  ).  The addresses are displayed when printing an
			  ilist entry.	Set the current block position to
			  the resulting offset.	 If it is the last command
			  on a line, print the first word in the block in
			  hexadecimal.





 Hewlett-Packard Company	    - 9 -   HP-UX Release 11i: November 2000






 fsdb_vxfs(1M)						       fsdb_vxfs(1M)




	   im		  Set the current position to immediate data area of
			  the current inode.  Set the current block position
			  to the resulting offset.  If it is the last
			  command on a line, print the first word of the
			  area in hexadecimal.

	   attr		  Set the current position to attribute data area of
			  the current inode.  Set the current block position
			  to the resulting offset.  If it is the last
			  command on a line, print the first word in the
			  block in hexadecimal.

	   # B|H|W|D =# [#]
			  Set the current position and change the number at
			  the specified offset to the given number.  If a
			  double-word offset is specified, then two numbers
			  separated by a space are required.  The resulting
			  value is printed in hexadecimal.

	   +|-# B|H|W|D =# [#]
			  Set the current position and change the number at
			  the specified relative offset to the given number.
			  If a double-word offset is specified, then two
			  numbers separated by a space are required.  The
			  resulting value is printed in hexadecimal.

	   # B|H|W|D = string
			  Set the current position and change the characters
			  at the specified offset to the given string.	The
			  resulting value is printed as a character string.

	   +|-	# B|H|W|D = string
			  Set the current position and change the characters
			  at the specified relative offset to the given
			  string.  The resulting value is printed as a
			  character string.

	   olt		  Set the current position to the object location
			  table (olt).	If it is the last command on a line,
			  print the object location table.

	   p [#] format	  Print the contents of the file system at the
			  current offset as the specified number of entries
			  of a given format.  The allowable print formats
			  are specified above.	If a number of entries to
			  print is not specified, one entry is printed.

	   inode_field = #
			  Set the contents of the given inode field to the
			  specified number.  The current inode specifies the
			  inode list entry to be modified.  The symbols



 Hewlett-Packard Company	   - 10 -   HP-UX Release 11i: November 2000






 fsdb_vxfs(1M)						       fsdb_vxfs(1M)




			  representing inode fields are listed above.

	   directory_block_field = #
			  Set the contents of the given directory block
			  field to the specified number.  The current block
			  is treated as a directory block and the offset in
			  that block which is represented by the given field
			  is changed.  The symbols representing directory
			  block fields are listed above.

	   d#		  Set the current directory entry to the specified
			  number.  The current block is treated as a
			  directory block.  If the current block is an
			  immediate data area for an inode, then the block
			  is treated as containing immediate directory
			  entries.  If it is the last command on a line, the
			  directory entry at the resulting offset is
			  printed.

	   directory_entry_field = #
			  Set the contents of the given directory field to
			  the specified number.	 The current directory entry
			  specifies where the directory entry is located.
			  The resulting value is printed in hexadecimal.

	   nm = string	  Set the directory name field of the current
			  directory entry to the specified string.  The
			  resulting value is printed as a character string.

	   calc # [+|-|*|/ #]
			  Take a number or the sum, difference, product or
			  dividend of two numbers and print in decimal,
			  octal, hexadecimal and character format.

	   find # B|H|W|D [#]
			  Search for the given numeric pattern in the file
			  system.  The size of the object to match is
			  specified.  If a double-word is specified, then
			  two numbers must be given.  The search is
			  performed forward from the current offset.  A
			  maximum number of blocks to search may be
			  specified.  If found, the location and value are
			  printed in hexadecimal.

	   find string [#]
			  Search for the given character string in the file
			  system.  The search is performed forward from the
			  current offset.  A maximum number of blocks to
			  search may be specified.  If found the location
			  and string are printed.




 Hewlett-Packard Company	   - 11 -   HP-UX Release 11i: November 2000






 fsdb_vxfs(1M)						       fsdb_vxfs(1M)




	   fmtlog	  Format all intent log entries. A completely
			  formatted intent log can be quite lengthy. It is a
			  good idea use the fsdb command as a filter and
			  redirect the output to a file or pager to look at
			  a complete log format.

	   listfset	  List all filesets by their indexes and names.

	   mapi #	  Treat the number as a logical offset in the file
			  described by the current inode, and print the
			  extent that it maps to.

	   reset	  Does the equivalent of exiting fsdb and restarting
			  on same device.

      The following help commands are supported:

	   h|help	  Display primary help screen.

	   h mod	  Display modification-commands help screen.

	   h print	  Display print-commands help screen.

 EXAMPLES
      386i	     Prints inumber 386 in an inode format.  This now
		     becomes the current working inode.

      ln=4	     Changes the link count for the working inode to 4.

      8192B.p S	     Prints the super-block of this file system
		     symbolically.

      d7.nm = foo    Changes the name field in the directory slot to foo.

      23i.im.d5	     Prints the sixth directory entry in the immediate area
		     of inode 23.

 WARNINGS
      Always execute fsck(1M) after using the fsdb command to modify a file
      system (use fsck -o full,nolog).

 SEE ALSO
      fsck_vxfs(1M), fsdb(1M).











 Hewlett-Packard Company	   - 12 -   HP-UX Release 11i: November 2000