jfs_debugfs(8)

✨ jfs_debugfs β€” shell-type JFS file system editor ✨

Hey bestie πŸ’– so this is the manual page for jfs_debugfs, and yes it lives in section 8 of the manual (the sysadmin one, the main character section, obviously πŸ‘‘). It's a shell-type editor for JFS file systems β€” like, a whole little interactive vibe where you poke at a disk at a really really low level. Buckle up πŸŽ€


🌸 SYNOPSIS 🌸

jfs_debugfs device

πŸ¦‹ DESCRIPTION πŸ¦‹

jfs_debugfs is a program which can be used to perform various low-level actions on a JFS formatted device. Like, low low. We're talking directly at the disk. It's giving surgery 🩺✨

device is the special file name corresponding to the actual device to be edited (e.g. /dev/hdb1). Yes, edited. You can literally change bytes. Iconic and terrifying πŸ’…

jfs_debugfs must be run as root. No cap. Root only. That's not a suggestion, that's the rule, and honestly? With this much power you should be a little scared πŸ™ˆ

πŸ’– COMMANDS πŸ’–

Here's the whole menu, every single one, no skips, no cuts, periodt 🫢

  • a[lter] <block> <offset> <hex_string> β€” replaces the data located at the <offset> of <block> with <hex_string> πŸ”₯
    • <block> is the block number β€” given in decimal
    • <offset> is the offset within that block β€” given in hexadecimal
    • <hex_string> is an even-numbered string of hexadecimal digits to write to the disk
  • b[tree] <block> [<offset>] β€” * not implemented yet * πŸ’€ displays one node of the btree located at <offset> of <block> and enters a subcommand mode to navigate the btree
    • SUBCOMMANDS:
      • l => visit left sibling
      • m => modify current node
      • p => visit parent node
      • r => visit right sibling
      • [0-9] => visit the n'th child node
      • x => exit subcommand mode
  • cb[blfsck] β€” displays the area used by ClearBadBlockList for communication with fsck 🧹
    • SUBCOMMANDS:
      • m => modify entries
      • x => exit subcommand mode
  • dir[ectory] <inode_number> [<file_set>] β€” displays the directory entries at <inode_number> and enters subcommand mode πŸ“‚
    • <inode_number> is the directory's inode β€” given in decimal
    • <file_set> currently must be zero
    • SUBCOMMANDS:
      • m => modify entries
      • x => exit subcommand mode
  • d[isplay] [<block> [<offset> [<format> [<count>]]]] β€” displays <count> objects located at the <offset> of <block> in <format> πŸ‘€
    • <block> is the block number β€” given in decimal
    • <offset> is the offset within <block> β€” given in hexadecimal
    • <format> is one of the following:
      • a => ascii
      • b => block allocation map
      • d => decimal
      • i => inode
      • I => inode allocation map
      • s => superblock
      • x => hexadecimal
      • X => extent allocation descriptor
    • <count> is the number of objects to display β€” given in decimal
  • dm[ap] β€” displays aggregate disk (block) map πŸ—ΊοΈ
    • SUBCOMMANDS
      • m => modify map fields
      • f => display free count
      • t => display tree levels
      • x => exit subcommand mode
  • dt[ree] <inode_number> [<file_set>] β€” displays root of the directory btree located at <inode_number> and enters a subcommand mode to navigate the btree 🌳
    • <inode_number> is the directory's inode β€” given in decimal
    • <file_set> currently must be zero
    • SUBCOMMANDS
      • l => visit left sibling
      • m => modify current node
      • p => visit parent node (not parent directory)
      • r => visit right sibling
      • [0-9] => visit the n'th child node
      • x => exit subcommand mode
  • fsckw[sphdr] β€” displays the header of the fsck workspace in the aggregate 🧰
    • SUBCOMMANDS:
      • m => modify entries
      • x => exit subcommand mode
  • h[elp] [<command>] β€” displays help for <command> πŸ†˜ if no command is given, all possible commands are displayed
  • ia[g] [<IAG_number>] [a | s | <file_set>] β€” displays IAG information for <IAG_number> and enters subcommand mode πŸ—‚οΈ
    • <IAG_number> is given in decimal
    • a is to use the primary aggregate inode table
    • s is to use the secondary aggregate inode table
    • <file_set> currently must be zero
    • SUBCOMMANDS
      • e => display/modify inode extents map
      • m => modify IAG
      • p => display/modify persistent map
      • w => display/modify working map
      • x => exit subcommand mode
  • i[node] [<inode_number>] [a | s | <file_set>] β€” displays inode information for <inode_number> and enters subcommand mode πŸ”
    • <inode_number> is given in decimal
    • a is to use the primary aggregate inode table
    • s is to use the secondary aggregate inode table
    • <file_set> currently must be zero
    • SUBCOMMANDS
      • a => display/modify inode's ACL
      • m => modify inode
      • x => exit subcommand mode
  • logs[uper] β€” displays the journal log superblock and enters subcommand mode πŸ““
    • SUBCOMMANDS
      • m => modify journal log superblock
      • x => exit subcommand mode
  • q[uit] β€” exits jfs_debugfs πŸ‘‹ bye bestie!
  • se[t] [<variable> <value>] β€” * not implemented yet * πŸ’€ set user-defined <variable> to <value>; if no arguments are given, displays all set variables
    • <variable> must begin with an alphabetic character
  • su[perblock] [p | s] β€” displays superblock data πŸ›οΈ
    • p displays the primary superblock
    • s displays the secondary superblock
    • SUBCOMMANDS:
      • m => modify entries
      • x => exit subcommand mode
  • s2p[erblock] [p | s] β€” displays alternate superblock data πŸ›οΈβœ¨
    • p displays the primary superblock
    • s displays the secondary superblock
    • SUBCOMMANDS:
      • m => modify entries
      • x => exit subcommand mode
  • u[nset] <variable> β€” * not implemented yet * πŸ’€ deletes user-defined <variable>
  • xt[ree] <inode_number> [<file_set>] β€” displays root of the non-directory btree located at <inode_number> and enters a subcommand mode to navigate the btree 🌲
    • <inode_number> is the directory's inode β€” given in decimal
    • <file_set> currently must be zero
    • SUBCOMMANDS
      • l => visit left sibling
      • m => modify current node
      • p => visit parent node (not parent directory)
      • r => visit right sibling
      • [0-9] => visit the n'th child node
      • x => exit subcommand mode

πŸ› REPORTING BUGS πŸ›

If you find a bug in JFS or jfs_debugfs, please report it via the bug tracking system ("Report Bugs" section) of the JFS project web site: http://jfs.sourceforge.net/ 🌈

Please send as much pertinent information as possible, including the complete output of running jfs_fsck with the -v and -n options on the JFS device. Like, all of it, don't be shy, the more receipts the better 🧾✨


πŸ‘€ SEE ALSO πŸ‘€

jfs_fsck(8), jfs_mkfs(8), jfs_fscklog(8), jfs_logdump(8), jfs_tune(8),


πŸ’œ AUTHORS πŸ’œ

  • Barry Arndt (barndt@us.ibm.com)
  • William Braswell, Jr.

jfs_debugfs is maintained by IBM. See the JFS project web site for more details: http://jfs.sourceforge.net/ 🫢


okay that's the whole page, you ate that πŸ’… this version of the jfs_debugfs(8) manual page is dated October 29, 2002 β€” yeah she's an elder but she's still THAT girl β€” and she answers to jfs_debugfs(8). mwah, go be careful with root, ily πŸŽ€βœ¨πŸ¦‹