Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ fsdb(1M) — DG/UX 5.4R3.00

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

clri(1M)

fsck(1M)



fsdb(1M)                       DG/UX 5.4R3.00                       fsdb(1M)


NAME
       fsdb - file system debugger

SYNOPSIS
       /etc/fsdb special [ - ]

   where:
       special   The pathname of a special file referring to a device
                 containing a file system

DESCRIPTION
       Fsdb views and alters information on the disk.  This information
       includes inodes, directory entries, and any other disk information.

       The - or an O argument suppresses error-checking routines that verify
       inode, directory, and block addresses.  To do these checks, fsdb
       reads the fsnodesperdar (inodes per disk allocation region) and
       fssize (file system size) fields of of the file system's super-
       block.

       Fsdb is intended mainly for emergencies where fsck(1M) and clri(1M)
       are ineffective in dealing with problems on the disk.  To use fsdb
       effectively, you must be familiar with the contents of inodes and
       directory entries and how these structures are used.

       Fsdb can display disk information in the following formats:

              inode
              directory entry
              double word
              word
              byte
              character

       Fsdb supports decimal and octal numbers.  A zero prefix indicates an
       octal number.  Decimal is the default.

   Examining Inodes
       To view an inode, type an integer followed by a lowercase i.  fsdb
       then lists the specified inode's number, mode, link count, user ID,
       group ID, size, the fragment numbers stored in its direct and
       indirect block arrays, and the creation, last-modification, and last-
       access times.  The default is the current inode.  When you enter
       fsdb, the current inode is number 2, indicating the root directory.
       Otherwise the current inode is the last inode referenced.

       To change the fields of the inode, use the mnemonics given for a
       particular field followed by an equal sign and the desired contents
       for that field.  For example, sz=1024 sets the file size for the
       current inode to 1024 bytes.  The i-number of an inode cannot be
       changed.

       The following mnemonics are used to change inodes:




Licensed material--property of copyright holder(s)                         1




fsdb(1M)                       DG/UX 5.4R3.00                       fsdb(1M)


              md     Mode
              ln     Link count
              uid    User ID number
              gid    Group ID number
              sz     File size in bytes
              a #    Data block numbers (0-12 for ordinary files, and 0-10
                     for non-ordinary files)
              at     Time of last access
              mt     Time of last modification
              ct     Time of creation
              maj    Major device number (special files only)
              min    Minor device number (special files only)

       For control point directories only:

       Max space usage    Total amount of space allowed in this and
                          subordinate directories.

       Cur space usage    Current amount of space allowed in this directory
                          and subordinates.

       Max file node      Total number of inodes allowed in this and
                          subordinate directories.

       Cur file node      Current number of inodes allowed in this directory
                          and subordinate directories.

       An inode's first 10 data blocks are direct blocks; the next 3 are
       indirect.  To print the contents of the data blocks, type an f.  The
       f can be followed by a logical block number and a print option or by
       a print option alone.  If you omit the number, block 0 is printed.
       The data in the specified block are printed according to the mode
       indicated by a print option.  The print options are:
              d      Print as directories.
              o      Print as octal words.
              e      Print as decimal words.
              c      Print as characters.
              b      Print as octal bytes.

       The f command does not work on a special file (device) or on empty
       data blocks.  (The pointer in the inode for an empty block in a file
       is 0.)

       The a field of the inode is examined and changed in a manner
       different from other fields.  To examine a data block entry, specify
       a followed by a logical block number and then b.  The address of the
       array element within the inode for the logical block number is
       printed, followed by A.  Then the octal and the decimal disk block
       number of the data block itself is printed.

   Examining Directory Entries
       To view a directory entry, type a d followed by an integer.  A
       directory entry consists of an inode number, the name length, entry
       length, sequence number, and filename.  Since directory entries are



Licensed material--property of copyright holder(s)                         2




fsdb(1M)                       DG/UX 5.4R3.00                       fsdb(1M)


       found in the data of a directory inode, fsdb displays the directory
       entry specified relative to the current inode.  If the current inode
       is not a directory inode or there are fewer directory entries than
       the one you indicate, fsdb prints this message:

            nonexistent block
            Cannot scan directory

       All fields of the directory entry except the inode number can be
       changed by giving the mnemonic for the field followed by an equal
       sign and then a value.  For the name field, the character string
       following the equal sign should be enclosed in double quotation marks
       if the first character is not alphabetic; otherwise, double quotation
       marks are optional for this field.  To alter the inode number for a
       directory entry, omit the mnemonic.  The mnemonics are as follows:
              nl     Name length in characters
              el     Entry length - total byte count used by the entry
              nm     Filename
              sq     Sequence number

       Use extreme care in changing names, name lengths, and entry lengths,
       because following entries can be corrupted or made unreachable.

   Examining Other Data
       Information can also be printed as double words, words, bytes, or
       characters.  To view data in these forms, one can use D, W, or B for
       double words, words, or bytes, respectively.  Used alone, these
       options print the current address in octal, followed by an indicator
       of the mode requested (D., W., or B.).  The contents of the current
       location follow in octal and then in decimal.  If the mode desired is
       preceded by a number, that number is taken as the address and becomes
       the current address.

       To alter the contents of a double word, word, or byte, follow the
       address and mode indicator (B, W, or D) by an equal sign and a value.
       For example, 01006W=0177777 sets the contents of word 01006 to
       0177777.

   Current Address
       The contents of the current address can also be viewed by following
       the letter p with an i for inodes or one of the print options
       described above for use with the f command.  If the p is followed by
       a number, that many elements (inodes, words, etc., depending on the
       print option used) are printed.

       The current address is normalized to an appropriate boundary before
       printing begins.  The current address advances with the printing and
       is left at the address of the last item printed.

       The current address can be saved by using the < symbol.  The symbol >
       restores the saved address.  Only one address can be saved at any one
       time; a subsequent use of < replaces a previously saved address with
       the current address.




Licensed material--property of copyright holder(s)                         3




fsdb(1M)                       DG/UX 5.4R3.00                       fsdb(1M)


   Commands and Symbols
       Following is a summary of fsdb commands:

       [n]i        Print inode n; current is the default.
          dn       Print directory entry number n.
          p[n]o|i  Print the next n inodes according to option o or in inode
                   format.
          f[n]o    Print logical data block n according to option o; block 0
                   is the default.
       [a]B        Enter byte mode at address a; default is the current
                   address.
       [a]W        Enter word mode at address a; default is the current
                   address.
       [a]D        Enter double-word mode at address a; default is the
                   current address.
          +,-      Print next item, last item.
          >,<      Save current address, restore saved address.
          O        Set or unset error-checking toggle.
          !        Escape to the shell.
          q        Quit; terminate the program.
          <NL>     Print next item of the previously specified type.

       The following symbols are used for assignment to inode and directory
       fields and also to locations directly:

          =n       Assignment
          =+n      Incremental assignment
          =-n      Decremental assignment

       You can use dots, tabs, and spaces as delimiters within commands to
       fsdb, but they are not necessary.  A line with just a new-line
       character increases the current address by the size of the data type
       last printed.  That is, the address is set to the next byte, word,
       double word, directory entry, or inode, letting you step through a
       region of the file system.  A line with just a + or - takes you to
       the next or previous item, respectively.

   Miscellaneous
       Fsdb cannot print more than a block's worth of data at once because
       only one block of data is kept in memory at any one time.  If a count
       of 0 is used with the p command, all entries to the end of the
       current block are printed.  Because fsdb deals with only a block at a
       time, raw devices and block devices can be debugged.

       All assignment operations result in immediate write-through of the
       current block.  During any assignment operation, numbers are checked
       for a possible truncation error due to the size of the destination
       address.  The message "alignment" is printed if such a truncation
       would have taken place if the assignment had been made.

       To terminate output at any time, type the delete character.

EXAMPLES
       2i            Prints the root inode of the current file system.



Licensed material--property of copyright holder(s)                         4




fsdb(1M)                       DG/UX 5.4R3.00                       fsdb(1M)


       386i          Prints inode number 386 in inode format; this becomes
                     the current inode.

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

       ln=+1         Increases the current inode's link count by 1.

       fc            Prints, in ASCII, block zero of the file associated
                     with the current inode.

       f2c           Prints the third data block of the current inode as
                     characters.

       2i.fd         Prints the root inode's first data block in the form of
                     directory entries.  This example combines several
                     operations on one command line; the same effect would
                     occur if the `2i' were followed by `fd' as a separate
                     command.

       d2            Prints the third directory entry in the current inode.

       d0=32         Sets the inode number of the first directory entry of
                     the current inode to 32.

       d5i.fc        Changes the current inode to that associated with the
                     sixth directory entry of the current inode; the first
                     logical block of the file is then printed in ASCII.

       0B.p0o        Prints the super-block of a DG/UX file system in octal.

       2i.a0b.d7=3   Changes the i-number for the eighth directory slot in
                     the root directory to 3.

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

       a2b.p0d       Prints the third block of the current inode as
                     directory entries.

       0140B         Produces the output

                     0140B.:   14 (12)

       if location 0140 happens to contain 014.

SEE ALSO
       clri(1M), fsck(1M).











Licensed material--property of copyright holder(s)                         5


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026