From cf34ba9aca5e05614ed7e2a2cadc9a8f7ba354cd Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Sun, 16 Nov 2025 01:46:16 -0600 Subject: [PATCH] Rearranged tag encodings, reserved suptype=0 for internal tags This was motivated by a discussion with a gh user, in which it was noted that not having a reserved suptype for internal tags risks potential issues with long-term future tag compatibility. I think the risk is low, but, without a reserved suptype, it _is_ possible for a future tag to conflict with an internal tag in an older driver version, potentially and unintentionally breaking compatibility. Note this is especially concerning during mdir compactions, where we copy tags we may not understand otherwise. In littlefs2 we reserved suptype=0x100, though this was mostly an accident due to saturating the 3-bit suptype space. With the larger tag space in littlefs3, the reserved suptype=0x100 was dropped. --- Long story short, this reserves suptype=0 for internal flags (well, and null, which is _mostly_ internal only, but does get written to disk as unreachable tags). Unfortunately, adding a new suptype _did_ require moving a bunch of stuff around: LFS3_TAG_NULL 0x0000 v--- ---- +--- ---- LFS3_TAG_INTERNAL 0x00tt v--- ---- +ttt tttt LFS3_TAG_CONFIG 0x01tt v--- ---1 +ttt tttt LFS3_TAG_MAGIC 0x0131 v--- ---1 +-11 --rr LFS3_TAG_VERSION 0x0134 v--- ---1 +-11 -1-- LFS3_TAG_RCOMPAT 0x0135 v--- ---1 +-11 -1-1 LFS3_TAG_WCOMPAT 0x0136 v--- ---1 +-11 -11- LFS3_TAG_OCOMPAT 0x0137 v--- ---1 +-11 -111 LFS3_TAG_GEOMETRY 0x0138 v--- ---1 +-11 1--- LFS3_TAG_NAMELIMIT 0x0139 v--- ---1 +-11 1--1 LFS3_TAG_FILELIMIT 0x013a v--- ---1 +-11 1-1- LFS3_TAG_ATTRLIMIT? 0x013b v--- ---1 +-11 1-11 LFS3_TAG_GDELTA 0x02tt v--- --1- +ttt tttt LFS3_TAG_GRMDELTA 0x0230 v--- --1- +-11 ---- LFS3_TAG_GBMAPDELTA 0x0234 v--- --1- +-11 -1rr LFS3_TAG_GDDTREEDELTA* 0x0238 v--- --1- +-11 1-rr LFS3_TAG_GPTREEDELTA* 0x023c v--- --1- +-11 11rr LFS3_TAG_NAME 0x03tt v--- --11 +ttt tttt LFS3_TAG_BNAME 0x0300 v--- --11 +--- ---- LFS3_TAG_REG 0x0301 v--- --11 +--- ---1 LFS3_TAG_DIR 0x0302 v--- --11 +--- --1- LFS3_TAG_STICKYNOTE 0x0303 v--- --11 +--- --11 LFS3_TAG_BOOKMARK 0x0304 v--- --11 +--- -1-- LFS3_TAG_SYMLINK? 0x0305 v--- --11 +--- -1-1 LFS3_TAG_SNAPSHOT? 0x0306 v--- --11 +--- -11- LFS3_TAG_MNAME 0x0330 v--- --11 +-11 ---- LFS3_TAG_DDNAME* 0x0350 v--- --11 +1-1 ---- LFS3_TAG_DDTOMB* 0x0351 v--- --11 +1-1 ---1 LFS3_TAG_STRUCT 0x04tt v--- -1-- +ttt tttt LFS3_TAG_BRANCH 0x040r v--- -1-- +--- --rr LFS3_TAG_DATA 0x0404 v--- -1-- +--- -1-- LFS3_TAG_BLOCK 0x0408 v--- -1-- +--- 1err LFS3_TAG_DDKEY* 0x0410 v--- -1-- +--1 ---- LFS3_TAG_DID 0x0420 v--- -1-- +-1- ---- LFS3_TAG_BSHRUB 0x0428 v--- -1-- +-1- 1--- LFS3_TAG_BTREE 0x042c v--- -1-- +-1- 11rr LFS3_TAG_MROOT 0x0431 v--- -1-- +-11 --rr LFS3_TAG_MDIR 0x0435 v--- -1-- +-11 -1rr LFS3_TAG_MSHRUB+ 0x0438 v--- -1-- +-11 1--- LFS3_TAG_MTREE 0x043c v--- -1-- +-11 11rr LFS3_TAG_BMRANGE 0x044u v--- -1-- +1-- ++uu LFS3_TAG_BMFREE 0x0440 v--- -1-- +1-- ---- LFS3_TAG_BMINUSE 0x0441 v--- -1-- +1-- ---1 LFS3_TAG_BMERASED 0x0442 v--- -1-- +1-- --1- LFS3_TAG_BMBAD 0x0443 v--- -1-- +1-- --11 LFS3_TAG_DDRC* 0x0450 v--- -1-- +1-1 ---- LFS3_TAG_DDPCOEFF* 0x0451 v--- -1-- +1-1 ---1 LFs3_TAG_PCOEFFMAP* 0x0460 v--- -1-- +11- ---- LFS3_TAG_ATTR 0x06aa v--- -11a +aaa aaaa LFS3_TAG_UATTR 0x06aa v--- -11- +aaa aaaa LFS3_TAG_SATTR 0x07aa v--- -111 +aaa aaaa LFS3_TAG_SHRUB 0x1kkk v--1 kkkk +kkk kkkk LFS3_TAG_ALT 0x4kkk v1cd kkkk +kkk kkkk LFS3_TAG_CKSUM 0x300p v-11 ---- ++++ +pqq LFS3_TAG_NOTE 0x3100 v-11 ---1 ++++ ++++ LFS3_TAG_ECKSUM 0x3200 v-11 --1- ++++ ++++ LFS3_TAG_GCKSUMDELTA 0x3300 v-11 --11 ++++ ++++ * Planned + Reserved ? Hypothetical Some additional notes: - I was on the fence on keeping the 0x30 prefix on config tags now that it is not longer needed to differentiate from null, but ultimately decided to keep it because: 1. it's fun, 2. it decreases the chance of false positives, 3. it keeps the redund bits readable in hexdumps, and 4. it reserves some tags < config, which is useful since order matters. Instead, I pushed the 0x30 prefix to _more_ tags, mainly gstate. As a coincidence, meta related tags (MNAME, MROOT, MRTREE) all shifted to also have the 0x30 prefix, which is a nice bit of unexpected consistency. - I also considered reserving the redund bits across the config tags similarly to what we've done in struct/gstate tags, but decided against it as 1. it significantly reduces the config tag space available, and 2. makes alignment with VERSION + R/W/OCOMPAT a bit awkward. Instead I think would should relax the redund bit alignment in other suptypes, though in practice the intermixing of non-redund and redund tags makes this a bit difficult. Maybe we should consider including redund bits as a hint for things like DATA? DDKEY? BSHRUB? etc? - I created a bit more space for file btree struct tags, allowing for both the future planned DDKEY, and BLOCK with optional erased-bit. We don't currently use this, but it may be useful for the future planned gddtree, which in-theory can track erased-state in partially written file blocks. Currently tracking erased-state in file blocks is difficult due to the potential of multiple references, and inability to prevent ecksum conflicts in raw data blocks. - UATTR/SATTR bumped up to 0x600/0x700 to keep the 1-bit alignment, leaving the suptype 0x500 unused. Though this may be useful if we ever run out of struct tags (suptype=0x400), which is likely where most new tags will go. --- Code changes were minimal, but with a bunch of noise: code stack ctx before: 35912 2280 660 after: 35920 (+0.0%) 2280 (+0.0%) 660 (+0.0%) code stack ctx gbmap before: 38800 2296 772 gbmap after: 38812 (+0.0%) 2296 (+0.0%) 772 (+0.0%) --- lfs3.h | 94 +++++++++++++++++++++---------------------- scripts/dbgbmap.py | 75 +++++++++++++++++----------------- scripts/dbgbmapsvg.py | 75 +++++++++++++++++----------------- scripts/dbgbtree.py | 75 +++++++++++++++++----------------- scripts/dbglfs3.py | 75 +++++++++++++++++----------------- scripts/dbgmtree.py | 75 +++++++++++++++++----------------- scripts/dbgrbyd.py | 75 +++++++++++++++++----------------- scripts/dbgtag.py | 75 +++++++++++++++++----------------- 8 files changed, 313 insertions(+), 306 deletions(-) diff --git a/lfs3.h b/lfs3.h index 48a462bf..fa02e55f 100644 --- a/lfs3.h +++ b/lfs3.h @@ -756,58 +756,58 @@ enum lfs3_tag { LFS3_TAG_NULL = 0x0000, // config tags - LFS3_TAG_CONFIG = 0x0000, - LFS3_TAG_MAGIC = 0x0031, - LFS3_TAG_VERSION = 0x0034, - LFS3_TAG_RCOMPAT = 0x0035, - LFS3_TAG_WCOMPAT = 0x0036, - LFS3_TAG_OCOMPAT = 0x0037, - LFS3_TAG_GEOMETRY = 0x0038, - LFS3_TAG_NAMELIMIT = 0x0039, - LFS3_TAG_FILELIMIT = 0x003a, + LFS3_TAG_CONFIG = 0x0100, + LFS3_TAG_MAGIC = 0x0131, + LFS3_TAG_VERSION = 0x0134, + LFS3_TAG_RCOMPAT = 0x0135, + LFS3_TAG_WCOMPAT = 0x0136, + LFS3_TAG_OCOMPAT = 0x0137, + LFS3_TAG_GEOMETRY = 0x0138, + LFS3_TAG_NAMELIMIT = 0x0139, + LFS3_TAG_FILELIMIT = 0x013a, // in-device only, to help find unknown config tags - LFS3_tag_UNKNOWNCONFIG = 0x003b, + LFS3_tag_UNKNOWNCONFIG = 0x013b, // global-state tags - LFS3_TAG_GDELTA = 0x0100, - LFS3_TAG_GRMDELTA = 0x0100, - LFS3_TAG_GBMAPDELTA = 0x0104, + LFS3_TAG_GDELTA = 0x0200, + LFS3_TAG_GRMDELTA = 0x0230, + LFS3_TAG_GBMAPDELTA = 0x0234, // name tags - LFS3_TAG_NAME = 0x0200, - LFS3_TAG_BNAME = 0x0200, - LFS3_TAG_REG = 0x0201, - LFS3_TAG_DIR = 0x0202, - LFS3_TAG_STICKYNOTE = 0x0203, - LFS3_TAG_BOOKMARK = 0x0204, + LFS3_TAG_NAME = 0x0300, + LFS3_TAG_BNAME = 0x0300, + LFS3_TAG_REG = 0x0301, + LFS3_TAG_DIR = 0x0302, + LFS3_TAG_STICKYNOTE = 0x0303, + LFS3_TAG_BOOKMARK = 0x0304, // in-device only name tags, these should never get written to disk - LFS3_tag_ORPHAN = 0x0205, - LFS3_tag_TRV = 0x0206, - LFS3_tag_UNKNOWN = 0x0207, + LFS3_tag_ORPHAN = 0x0305, + LFS3_tag_TRV = 0x0306, + LFS3_tag_UNKNOWN = 0x0307, // non-file name tags - LFS3_TAG_MNAME = 0x0220, + LFS3_TAG_MNAME = 0x0330, // struct tags - LFS3_TAG_STRUCT = 0x0300, - LFS3_TAG_BRANCH = 0x0300, - LFS3_TAG_DATA = 0x0304, - LFS3_TAG_BLOCK = 0x0308, - LFS3_TAG_DID = 0x0314, - LFS3_TAG_BSHRUB = 0x0318, - LFS3_TAG_BTREE = 0x031c, - LFS3_TAG_MROOT = 0x0321, - LFS3_TAG_MDIR = 0x0325, - LFS3_TAG_MTREE = 0x032c, - LFS3_TAG_BMRANGE = 0x0330, - LFS3_TAG_BMFREE = 0x0330, - LFS3_TAG_BMINUSE = 0x0331, - LFS3_TAG_BMERASED = 0x0332, - LFS3_TAG_BMBAD = 0x0333, + LFS3_TAG_STRUCT = 0x0400, + LFS3_TAG_BRANCH = 0x0400, + LFS3_TAG_DATA = 0x0404, + LFS3_TAG_BLOCK = 0x0408, + LFS3_TAG_DID = 0x0420, + LFS3_TAG_BSHRUB = 0x0428, + LFS3_TAG_BTREE = 0x042c, + LFS3_TAG_MROOT = 0x0431, + LFS3_TAG_MDIR = 0x0435, + LFS3_TAG_MTREE = 0x043c, + LFS3_TAG_BMRANGE = 0x0440, + LFS3_TAG_BMFREE = 0x0440, + LFS3_TAG_BMINUSE = 0x0441, + LFS3_TAG_BMERASED = 0x0442, + LFS3_TAG_BMBAD = 0x0443, // user/sys attributes - LFS3_TAG_ATTR = 0x0400, - LFS3_TAG_UATTR = 0x0400, - LFS3_TAG_SATTR = 0x0500, + LFS3_TAG_ATTR = 0x0600, + LFS3_TAG_UATTR = 0x0600, + LFS3_TAG_SATTR = 0x0700, // shrub tags belong to secondary trees LFS3_TAG_SHRUB = 0x1000, @@ -828,12 +828,12 @@ enum lfs3_tag { LFS3_TAG_GCKSUMDELTA = 0x3300, // in-device only tags, these should never get written to disk - LFS3_tag_INTERNAL = 0x0800, - LFS3_tag_RATTRS = 0x0800, - LFS3_tag_SHRUBCOMMIT = 0x0801, - LFS3_tag_GRMPUSH = 0x0802, - LFS3_tag_MOVE = 0x0803, - LFS3_tag_ATTRS = 0x0804, + LFS3_tag_INTERNAL = 0x0000, + LFS3_tag_RATTRS = 0x0001, + LFS3_tag_SHRUBCOMMIT = 0x0002, + LFS3_tag_GRMPUSH = 0x0003, + LFS3_tag_MOVE = 0x0004, + LFS3_tag_ATTRS = 0x0005, // some in-device only tag modifiers LFS3_tag_RM = 0x8000, diff --git a/scripts/dbgbmap.py b/scripts/dbgbmap.py index ca82a0bf..711234f3 100755 --- a/scripts/dbgbmap.py +++ b/scripts/dbgbmap.py @@ -113,43 +113,44 @@ WCOMPAT_GBMAP = 0x00080000 # Global on-disk block-map in use WCOMPAT_DIR = 0x01000000 # Directory file types in use TAG_NULL = 0x0000 ## v--- ---- +--- ---- -TAG_CONFIG = 0x0000 ## v--- ---- +ttt tttt -TAG_MAGIC = 0x0031 # v--- ---- +-11 --rr -TAG_VERSION = 0x0034 # v--- ---- +-11 -1-- -TAG_RCOMPAT = 0x0035 # v--- ---- +-11 -1-1 -TAG_WCOMPAT = 0x0036 # v--- ---- +-11 -11- -TAG_OCOMPAT = 0x0037 # v--- ---- +-11 -111 -TAG_GEOMETRY = 0x0038 # v--- ---- +-11 1--- -TAG_NAMELIMIT = 0x0039 # v--- ---- +-11 1--1 -TAG_FILELIMIT = 0x003a # v--- ---- +-11 1-1- -TAG_GDELTA = 0x0100 ## v--- ---1 +ttt ttrr -TAG_GRMDELTA = 0x0100 # v--- ---1 +--- ---- -TAG_GBMAPDELTA = 0x0104 # v--- ---1 +--- -1rr -TAG_NAME = 0x0200 ## v--- --1- +ttt tttt -TAG_BNAME = 0x0200 # v--- --1- +--- ---- -TAG_REG = 0x0201 # v--- --1- +--- ---1 -TAG_DIR = 0x0202 # v--- --1- +--- --1- -TAG_STICKYNOTE = 0x0203 # v--- --1- +--- --11 -TAG_BOOKMARK = 0x0204 # v--- --1- +--- -1-- -TAG_MNAME = 0x0220 # v--- --1- +-1- ---- -TAG_STRUCT = 0x0300 ## v--- --11 +ttt ttrr -TAG_BRANCH = 0x0300 # v--- --11 +--- --rr -TAG_DATA = 0x0304 # v--- --11 +--- -1-- -TAG_BLOCK = 0x0308 # v--- --11 +--- 1err -TAG_DID = 0x0314 # v--- --11 +--1 -1-- -TAG_BSHRUB = 0x0318 # v--- --11 +--1 1--- -TAG_BTREE = 0x031c # v--- --11 +--1 11rr -TAG_MROOT = 0x0321 # v--- --11 +-1- --rr -TAG_MDIR = 0x0325 # v--- --11 +-1- -1rr -TAG_MTREE = 0x032c # v--- --11 +-1- 11rr -TAG_BMRANGE = 0x0330 # v--- --11 +-11 ++uu -TAG_BMFREE = 0x0330 # v--- --11 +-11 ---- -TAG_BMINUSE = 0x0331 # v--- --11 +-11 ---1 -TAG_BMERASED = 0x0332 # v--- --11 +-11 --1- -TAG_BMBAD = 0x0333 # v--- --11 +-11 --11 -TAG_ATTR = 0x0400 ## v--- -1-a +aaa aaaa -TAG_UATTR = 0x0400 # v--- -1-- +aaa aaaa -TAG_SATTR = 0x0500 # v--- -1-1 +aaa aaaa +TAG_INTERNAL = 0x0000 ## v--- ---- +ttt tttt +TAG_CONFIG = 0x0100 ## v--- ---1 +ttt tttt +TAG_MAGIC = 0x0131 # v--- ---1 +-11 --rr +TAG_VERSION = 0x0134 # v--- ---1 +-11 -1-- +TAG_RCOMPAT = 0x0135 # v--- ---1 +-11 -1-1 +TAG_WCOMPAT = 0x0136 # v--- ---1 +-11 -11- +TAG_OCOMPAT = 0x0137 # v--- ---1 +-11 -111 +TAG_GEOMETRY = 0x0138 # v--- ---1 +-11 1--- +TAG_NAMELIMIT = 0x0139 # v--- ---1 +-11 1--1 +TAG_FILELIMIT = 0x013a # v--- ---1 +-11 1-1- +TAG_GDELTA = 0x0200 ## v--- --1- +ttt tttt +TAG_GRMDELTA = 0x0230 # v--- --1- +-11 ---- +TAG_GBMAPDELTA = 0x0234 # v--- --1- +-11 -1rr +TAG_NAME = 0x0300 ## v--- --11 +ttt tttt +TAG_BNAME = 0x0300 # v--- --11 +--- ---- +TAG_REG = 0x0301 # v--- --11 +--- ---1 +TAG_DIR = 0x0302 # v--- --11 +--- --1- +TAG_STICKYNOTE = 0x0303 # v--- --11 +--- --11 +TAG_BOOKMARK = 0x0304 # v--- --11 +--- -1-- +TAG_MNAME = 0x0330 # v--- --11 +-11 ---- +TAG_STRUCT = 0x0400 ## v--- -1-- +ttt tttt +TAG_BRANCH = 0x0400 # v--- -1-- +--- --rr +TAG_DATA = 0x0404 # v--- -1-- +--- -1-- +TAG_BLOCK = 0x0408 # v--- -1-- +--- 1err +TAG_DID = 0x0420 # v--- -1-- +-1- ---- +TAG_BSHRUB = 0x0428 # v--- -1-- +-1- 1--- +TAG_BTREE = 0x042c # v--- -1-- +-1- 11rr +TAG_MROOT = 0x0431 # v--- -1-- +-11 --rr +TAG_MDIR = 0x0435 # v--- -1-- +-11 -1rr +TAG_MTREE = 0x043c # v--- -1-- +-11 11rr +TAG_BMRANGE = 0x0440 # v--- -1-- +1-- ++uu +TAG_BMFREE = 0x0440 # v--- -1-- +1-- ---- +TAG_BMINUSE = 0x0441 # v--- -1-- +1-- ---1 +TAG_BMERASED = 0x0442 # v--- -1-- +1-- --1- +TAG_BMBAD = 0x0443 # v--- -1-- +1-- --11 +TAG_ATTR = 0x0600 ## v--- -11a +aaa aaaa +TAG_UATTR = 0x0600 # v--- -11- +aaa aaaa +TAG_SATTR = 0x0700 # v--- -111 +aaa aaaa TAG_SHRUB = 0x1000 ## v--1 kkkk +kkk kkkk TAG_ALT = 0x4000 ## v1cd kkkk +kkk kkkk TAG_B = 0x0000 diff --git a/scripts/dbgbmapsvg.py b/scripts/dbgbmapsvg.py index 9d441280..32664007 100755 --- a/scripts/dbgbmapsvg.py +++ b/scripts/dbgbmapsvg.py @@ -133,43 +133,44 @@ WCOMPAT_GBMAP = 0x00080000 # Global on-disk block-map in use WCOMPAT_DIR = 0x01000000 # Directory file types in use TAG_NULL = 0x0000 ## v--- ---- +--- ---- -TAG_CONFIG = 0x0000 ## v--- ---- +ttt tttt -TAG_MAGIC = 0x0031 # v--- ---- +-11 --rr -TAG_VERSION = 0x0034 # v--- ---- +-11 -1-- -TAG_RCOMPAT = 0x0035 # v--- ---- +-11 -1-1 -TAG_WCOMPAT = 0x0036 # v--- ---- +-11 -11- -TAG_OCOMPAT = 0x0037 # v--- ---- +-11 -111 -TAG_GEOMETRY = 0x0038 # v--- ---- +-11 1--- -TAG_NAMELIMIT = 0x0039 # v--- ---- +-11 1--1 -TAG_FILELIMIT = 0x003a # v--- ---- +-11 1-1- -TAG_GDELTA = 0x0100 ## v--- ---1 +ttt ttrr -TAG_GRMDELTA = 0x0100 # v--- ---1 +--- ---- -TAG_GBMAPDELTA = 0x0104 # v--- ---1 +--- -1rr -TAG_NAME = 0x0200 ## v--- --1- +ttt tttt -TAG_BNAME = 0x0200 # v--- --1- +--- ---- -TAG_REG = 0x0201 # v--- --1- +--- ---1 -TAG_DIR = 0x0202 # v--- --1- +--- --1- -TAG_STICKYNOTE = 0x0203 # v--- --1- +--- --11 -TAG_BOOKMARK = 0x0204 # v--- --1- +--- -1-- -TAG_MNAME = 0x0220 # v--- --1- +-1- ---- -TAG_STRUCT = 0x0300 ## v--- --11 +ttt ttrr -TAG_BRANCH = 0x0300 # v--- --11 +--- --rr -TAG_DATA = 0x0304 # v--- --11 +--- -1-- -TAG_BLOCK = 0x0308 # v--- --11 +--- 1err -TAG_DID = 0x0314 # v--- --11 +--1 -1-- -TAG_BSHRUB = 0x0318 # v--- --11 +--1 1--- -TAG_BTREE = 0x031c # v--- --11 +--1 11rr -TAG_MROOT = 0x0321 # v--- --11 +-1- --rr -TAG_MDIR = 0x0325 # v--- --11 +-1- -1rr -TAG_MTREE = 0x032c # v--- --11 +-1- 11rr -TAG_BMRANGE = 0x0330 # v--- --11 +-11 ++uu -TAG_BMFREE = 0x0330 # v--- --11 +-11 ---- -TAG_BMINUSE = 0x0331 # v--- --11 +-11 ---1 -TAG_BMERASED = 0x0332 # v--- --11 +-11 --1- -TAG_BMBAD = 0x0333 # v--- --11 +-11 --11 -TAG_ATTR = 0x0400 ## v--- -1-a +aaa aaaa -TAG_UATTR = 0x0400 # v--- -1-- +aaa aaaa -TAG_SATTR = 0x0500 # v--- -1-1 +aaa aaaa +TAG_INTERNAL = 0x0000 ## v--- ---- +ttt tttt +TAG_CONFIG = 0x0100 ## v--- ---1 +ttt tttt +TAG_MAGIC = 0x0131 # v--- ---1 +-11 --rr +TAG_VERSION = 0x0134 # v--- ---1 +-11 -1-- +TAG_RCOMPAT = 0x0135 # v--- ---1 +-11 -1-1 +TAG_WCOMPAT = 0x0136 # v--- ---1 +-11 -11- +TAG_OCOMPAT = 0x0137 # v--- ---1 +-11 -111 +TAG_GEOMETRY = 0x0138 # v--- ---1 +-11 1--- +TAG_NAMELIMIT = 0x0139 # v--- ---1 +-11 1--1 +TAG_FILELIMIT = 0x013a # v--- ---1 +-11 1-1- +TAG_GDELTA = 0x0200 ## v--- --1- +ttt tttt +TAG_GRMDELTA = 0x0230 # v--- --1- +-11 ---- +TAG_GBMAPDELTA = 0x0234 # v--- --1- +-11 -1rr +TAG_NAME = 0x0300 ## v--- --11 +ttt tttt +TAG_BNAME = 0x0300 # v--- --11 +--- ---- +TAG_REG = 0x0301 # v--- --11 +--- ---1 +TAG_DIR = 0x0302 # v--- --11 +--- --1- +TAG_STICKYNOTE = 0x0303 # v--- --11 +--- --11 +TAG_BOOKMARK = 0x0304 # v--- --11 +--- -1-- +TAG_MNAME = 0x0330 # v--- --11 +-11 ---- +TAG_STRUCT = 0x0400 ## v--- -1-- +ttt tttt +TAG_BRANCH = 0x0400 # v--- -1-- +--- --rr +TAG_DATA = 0x0404 # v--- -1-- +--- -1-- +TAG_BLOCK = 0x0408 # v--- -1-- +--- 1err +TAG_DID = 0x0420 # v--- -1-- +-1- ---- +TAG_BSHRUB = 0x0428 # v--- -1-- +-1- 1--- +TAG_BTREE = 0x042c # v--- -1-- +-1- 11rr +TAG_MROOT = 0x0431 # v--- -1-- +-11 --rr +TAG_MDIR = 0x0435 # v--- -1-- +-11 -1rr +TAG_MTREE = 0x043c # v--- -1-- +-11 11rr +TAG_BMRANGE = 0x0440 # v--- -1-- +1-- ++uu +TAG_BMFREE = 0x0440 # v--- -1-- +1-- ---- +TAG_BMINUSE = 0x0441 # v--- -1-- +1-- ---1 +TAG_BMERASED = 0x0442 # v--- -1-- +1-- --1- +TAG_BMBAD = 0x0443 # v--- -1-- +1-- --11 +TAG_ATTR = 0x0600 ## v--- -11a +aaa aaaa +TAG_UATTR = 0x0600 # v--- -11- +aaa aaaa +TAG_SATTR = 0x0700 # v--- -111 +aaa aaaa TAG_SHRUB = 0x1000 ## v--1 kkkk +kkk kkkk TAG_ALT = 0x4000 ## v1cd kkkk +kkk kkkk TAG_B = 0x0000 diff --git a/scripts/dbgbtree.py b/scripts/dbgbtree.py index ee6a2673..b703ba7a 100755 --- a/scripts/dbgbtree.py +++ b/scripts/dbgbtree.py @@ -19,43 +19,44 @@ except ModuleNotFoundError: TAG_NULL = 0x0000 ## v--- ---- +--- ---- -TAG_CONFIG = 0x0000 ## v--- ---- +ttt tttt -TAG_MAGIC = 0x0031 # v--- ---- +-11 --rr -TAG_VERSION = 0x0034 # v--- ---- +-11 -1-- -TAG_RCOMPAT = 0x0035 # v--- ---- +-11 -1-1 -TAG_WCOMPAT = 0x0036 # v--- ---- +-11 -11- -TAG_OCOMPAT = 0x0037 # v--- ---- +-11 -111 -TAG_GEOMETRY = 0x0038 # v--- ---- +-11 1--- -TAG_NAMELIMIT = 0x0039 # v--- ---- +-11 1--1 -TAG_FILELIMIT = 0x003a # v--- ---- +-11 1-1- -TAG_GDELTA = 0x0100 ## v--- ---1 +ttt ttrr -TAG_GRMDELTA = 0x0100 # v--- ---1 +--- ---- -TAG_GBMAPDELTA = 0x0104 # v--- ---1 +--- -1rr -TAG_NAME = 0x0200 ## v--- --1- +ttt tttt -TAG_BNAME = 0x0200 # v--- --1- +--- ---- -TAG_REG = 0x0201 # v--- --1- +--- ---1 -TAG_DIR = 0x0202 # v--- --1- +--- --1- -TAG_STICKYNOTE = 0x0203 # v--- --1- +--- --11 -TAG_BOOKMARK = 0x0204 # v--- --1- +--- -1-- -TAG_MNAME = 0x0220 # v--- --1- +-1- ---- -TAG_STRUCT = 0x0300 ## v--- --11 +ttt ttrr -TAG_BRANCH = 0x0300 # v--- --11 +--- --rr -TAG_DATA = 0x0304 # v--- --11 +--- -1-- -TAG_BLOCK = 0x0308 # v--- --11 +--- 1err -TAG_DID = 0x0314 # v--- --11 +--1 -1-- -TAG_BSHRUB = 0x0318 # v--- --11 +--1 1--- -TAG_BTREE = 0x031c # v--- --11 +--1 11rr -TAG_MROOT = 0x0321 # v--- --11 +-1- --rr -TAG_MDIR = 0x0325 # v--- --11 +-1- -1rr -TAG_MTREE = 0x032c # v--- --11 +-1- 11rr -TAG_BMRANGE = 0x0330 # v--- --11 +-11 ++uu -TAG_BMFREE = 0x0330 # v--- --11 +-11 ---- -TAG_BMINUSE = 0x0331 # v--- --11 +-11 ---1 -TAG_BMERASED = 0x0332 # v--- --11 +-11 --1- -TAG_BMBAD = 0x0333 # v--- --11 +-11 --11 -TAG_ATTR = 0x0400 ## v--- -1-a +aaa aaaa -TAG_UATTR = 0x0400 # v--- -1-- +aaa aaaa -TAG_SATTR = 0x0500 # v--- -1-1 +aaa aaaa +TAG_INTERNAL = 0x0000 ## v--- ---- +ttt tttt +TAG_CONFIG = 0x0100 ## v--- ---1 +ttt tttt +TAG_MAGIC = 0x0131 # v--- ---1 +-11 --rr +TAG_VERSION = 0x0134 # v--- ---1 +-11 -1-- +TAG_RCOMPAT = 0x0135 # v--- ---1 +-11 -1-1 +TAG_WCOMPAT = 0x0136 # v--- ---1 +-11 -11- +TAG_OCOMPAT = 0x0137 # v--- ---1 +-11 -111 +TAG_GEOMETRY = 0x0138 # v--- ---1 +-11 1--- +TAG_NAMELIMIT = 0x0139 # v--- ---1 +-11 1--1 +TAG_FILELIMIT = 0x013a # v--- ---1 +-11 1-1- +TAG_GDELTA = 0x0200 ## v--- --1- +ttt tttt +TAG_GRMDELTA = 0x0230 # v--- --1- +-11 ---- +TAG_GBMAPDELTA = 0x0234 # v--- --1- +-11 -1rr +TAG_NAME = 0x0300 ## v--- --11 +ttt tttt +TAG_BNAME = 0x0300 # v--- --11 +--- ---- +TAG_REG = 0x0301 # v--- --11 +--- ---1 +TAG_DIR = 0x0302 # v--- --11 +--- --1- +TAG_STICKYNOTE = 0x0303 # v--- --11 +--- --11 +TAG_BOOKMARK = 0x0304 # v--- --11 +--- -1-- +TAG_MNAME = 0x0330 # v--- --11 +-11 ---- +TAG_STRUCT = 0x0400 ## v--- -1-- +ttt tttt +TAG_BRANCH = 0x0400 # v--- -1-- +--- --rr +TAG_DATA = 0x0404 # v--- -1-- +--- -1-- +TAG_BLOCK = 0x0408 # v--- -1-- +--- 1err +TAG_DID = 0x0420 # v--- -1-- +-1- ---- +TAG_BSHRUB = 0x0428 # v--- -1-- +-1- 1--- +TAG_BTREE = 0x042c # v--- -1-- +-1- 11rr +TAG_MROOT = 0x0431 # v--- -1-- +-11 --rr +TAG_MDIR = 0x0435 # v--- -1-- +-11 -1rr +TAG_MTREE = 0x043c # v--- -1-- +-11 11rr +TAG_BMRANGE = 0x0440 # v--- -1-- +1-- ++uu +TAG_BMFREE = 0x0440 # v--- -1-- +1-- ---- +TAG_BMINUSE = 0x0441 # v--- -1-- +1-- ---1 +TAG_BMERASED = 0x0442 # v--- -1-- +1-- --1- +TAG_BMBAD = 0x0443 # v--- -1-- +1-- --11 +TAG_ATTR = 0x0600 ## v--- -11a +aaa aaaa +TAG_UATTR = 0x0600 # v--- -11- +aaa aaaa +TAG_SATTR = 0x0700 # v--- -111 +aaa aaaa TAG_SHRUB = 0x1000 ## v--1 kkkk +kkk kkkk TAG_ALT = 0x4000 ## v1cd kkkk +kkk kkkk TAG_B = 0x0000 diff --git a/scripts/dbglfs3.py b/scripts/dbglfs3.py index 28b0c014..c3e04c86 100755 --- a/scripts/dbglfs3.py +++ b/scripts/dbglfs3.py @@ -38,43 +38,44 @@ WCOMPAT_GBMAP = 0x00080000 # Global on-disk block-map in use WCOMPAT_DIR = 0x01000000 # Directory file types in use TAG_NULL = 0x0000 ## v--- ---- +--- ---- -TAG_CONFIG = 0x0000 ## v--- ---- +ttt tttt -TAG_MAGIC = 0x0031 # v--- ---- +-11 --rr -TAG_VERSION = 0x0034 # v--- ---- +-11 -1-- -TAG_RCOMPAT = 0x0035 # v--- ---- +-11 -1-1 -TAG_WCOMPAT = 0x0036 # v--- ---- +-11 -11- -TAG_OCOMPAT = 0x0037 # v--- ---- +-11 -111 -TAG_GEOMETRY = 0x0038 # v--- ---- +-11 1--- -TAG_NAMELIMIT = 0x0039 # v--- ---- +-11 1--1 -TAG_FILELIMIT = 0x003a # v--- ---- +-11 1-1- -TAG_GDELTA = 0x0100 ## v--- ---1 +ttt ttrr -TAG_GRMDELTA = 0x0100 # v--- ---1 +--- ---- -TAG_GBMAPDELTA = 0x0104 # v--- ---1 +--- -1rr -TAG_NAME = 0x0200 ## v--- --1- +ttt tttt -TAG_BNAME = 0x0200 # v--- --1- +--- ---- -TAG_REG = 0x0201 # v--- --1- +--- ---1 -TAG_DIR = 0x0202 # v--- --1- +--- --1- -TAG_STICKYNOTE = 0x0203 # v--- --1- +--- --11 -TAG_BOOKMARK = 0x0204 # v--- --1- +--- -1-- -TAG_MNAME = 0x0220 # v--- --1- +-1- ---- -TAG_STRUCT = 0x0300 ## v--- --11 +ttt ttrr -TAG_BRANCH = 0x0300 # v--- --11 +--- --rr -TAG_DATA = 0x0304 # v--- --11 +--- -1-- -TAG_BLOCK = 0x0308 # v--- --11 +--- 1err -TAG_DID = 0x0314 # v--- --11 +--1 -1-- -TAG_BSHRUB = 0x0318 # v--- --11 +--1 1--- -TAG_BTREE = 0x031c # v--- --11 +--1 11rr -TAG_MROOT = 0x0321 # v--- --11 +-1- --rr -TAG_MDIR = 0x0325 # v--- --11 +-1- -1rr -TAG_MTREE = 0x032c # v--- --11 +-1- 11rr -TAG_BMRANGE = 0x0330 # v--- --11 +-11 ++uu -TAG_BMFREE = 0x0330 # v--- --11 +-11 ---- -TAG_BMINUSE = 0x0331 # v--- --11 +-11 ---1 -TAG_BMERASED = 0x0332 # v--- --11 +-11 --1- -TAG_BMBAD = 0x0333 # v--- --11 +-11 --11 -TAG_ATTR = 0x0400 ## v--- -1-a +aaa aaaa -TAG_UATTR = 0x0400 # v--- -1-- +aaa aaaa -TAG_SATTR = 0x0500 # v--- -1-1 +aaa aaaa +TAG_INTERNAL = 0x0000 ## v--- ---- +ttt tttt +TAG_CONFIG = 0x0100 ## v--- ---1 +ttt tttt +TAG_MAGIC = 0x0131 # v--- ---1 +-11 --rr +TAG_VERSION = 0x0134 # v--- ---1 +-11 -1-- +TAG_RCOMPAT = 0x0135 # v--- ---1 +-11 -1-1 +TAG_WCOMPAT = 0x0136 # v--- ---1 +-11 -11- +TAG_OCOMPAT = 0x0137 # v--- ---1 +-11 -111 +TAG_GEOMETRY = 0x0138 # v--- ---1 +-11 1--- +TAG_NAMELIMIT = 0x0139 # v--- ---1 +-11 1--1 +TAG_FILELIMIT = 0x013a # v--- ---1 +-11 1-1- +TAG_GDELTA = 0x0200 ## v--- --1- +ttt tttt +TAG_GRMDELTA = 0x0230 # v--- --1- +-11 ---- +TAG_GBMAPDELTA = 0x0234 # v--- --1- +-11 -1rr +TAG_NAME = 0x0300 ## v--- --11 +ttt tttt +TAG_BNAME = 0x0300 # v--- --11 +--- ---- +TAG_REG = 0x0301 # v--- --11 +--- ---1 +TAG_DIR = 0x0302 # v--- --11 +--- --1- +TAG_STICKYNOTE = 0x0303 # v--- --11 +--- --11 +TAG_BOOKMARK = 0x0304 # v--- --11 +--- -1-- +TAG_MNAME = 0x0330 # v--- --11 +-11 ---- +TAG_STRUCT = 0x0400 ## v--- -1-- +ttt tttt +TAG_BRANCH = 0x0400 # v--- -1-- +--- --rr +TAG_DATA = 0x0404 # v--- -1-- +--- -1-- +TAG_BLOCK = 0x0408 # v--- -1-- +--- 1err +TAG_DID = 0x0420 # v--- -1-- +-1- ---- +TAG_BSHRUB = 0x0428 # v--- -1-- +-1- 1--- +TAG_BTREE = 0x042c # v--- -1-- +-1- 11rr +TAG_MROOT = 0x0431 # v--- -1-- +-11 --rr +TAG_MDIR = 0x0435 # v--- -1-- +-11 -1rr +TAG_MTREE = 0x043c # v--- -1-- +-11 11rr +TAG_BMRANGE = 0x0440 # v--- -1-- +1-- ++uu +TAG_BMFREE = 0x0440 # v--- -1-- +1-- ---- +TAG_BMINUSE = 0x0441 # v--- -1-- +1-- ---1 +TAG_BMERASED = 0x0442 # v--- -1-- +1-- --1- +TAG_BMBAD = 0x0443 # v--- -1-- +1-- --11 +TAG_ATTR = 0x0600 ## v--- -11a +aaa aaaa +TAG_UATTR = 0x0600 # v--- -11- +aaa aaaa +TAG_SATTR = 0x0700 # v--- -111 +aaa aaaa TAG_SHRUB = 0x1000 ## v--1 kkkk +kkk kkkk TAG_ALT = 0x4000 ## v1cd kkkk +kkk kkkk TAG_B = 0x0000 diff --git a/scripts/dbgmtree.py b/scripts/dbgmtree.py index 25ba929d..cd42b80c 100755 --- a/scripts/dbgmtree.py +++ b/scripts/dbgmtree.py @@ -19,43 +19,44 @@ except ModuleNotFoundError: TAG_NULL = 0x0000 ## v--- ---- +--- ---- -TAG_CONFIG = 0x0000 ## v--- ---- +ttt tttt -TAG_MAGIC = 0x0031 # v--- ---- +-11 --rr -TAG_VERSION = 0x0034 # v--- ---- +-11 -1-- -TAG_RCOMPAT = 0x0035 # v--- ---- +-11 -1-1 -TAG_WCOMPAT = 0x0036 # v--- ---- +-11 -11- -TAG_OCOMPAT = 0x0037 # v--- ---- +-11 -111 -TAG_GEOMETRY = 0x0038 # v--- ---- +-11 1--- -TAG_NAMELIMIT = 0x0039 # v--- ---- +-11 1--1 -TAG_FILELIMIT = 0x003a # v--- ---- +-11 1-1- -TAG_GDELTA = 0x0100 ## v--- ---1 +ttt ttrr -TAG_GRMDELTA = 0x0100 # v--- ---1 +--- ---- -TAG_GBMAPDELTA = 0x0104 # v--- ---1 +--- -1rr -TAG_NAME = 0x0200 ## v--- --1- +ttt tttt -TAG_BNAME = 0x0200 # v--- --1- +--- ---- -TAG_REG = 0x0201 # v--- --1- +--- ---1 -TAG_DIR = 0x0202 # v--- --1- +--- --1- -TAG_STICKYNOTE = 0x0203 # v--- --1- +--- --11 -TAG_BOOKMARK = 0x0204 # v--- --1- +--- -1-- -TAG_MNAME = 0x0220 # v--- --1- +-1- ---- -TAG_STRUCT = 0x0300 ## v--- --11 +ttt ttrr -TAG_BRANCH = 0x0300 # v--- --11 +--- --rr -TAG_DATA = 0x0304 # v--- --11 +--- -1-- -TAG_BLOCK = 0x0308 # v--- --11 +--- 1err -TAG_DID = 0x0314 # v--- --11 +--1 -1-- -TAG_BSHRUB = 0x0318 # v--- --11 +--1 1--- -TAG_BTREE = 0x031c # v--- --11 +--1 11rr -TAG_MROOT = 0x0321 # v--- --11 +-1- --rr -TAG_MDIR = 0x0325 # v--- --11 +-1- -1rr -TAG_MTREE = 0x032c # v--- --11 +-1- 11rr -TAG_BMRANGE = 0x0330 # v--- --11 +-11 ++uu -TAG_BMFREE = 0x0330 # v--- --11 +-11 ---- -TAG_BMINUSE = 0x0331 # v--- --11 +-11 ---1 -TAG_BMERASED = 0x0332 # v--- --11 +-11 --1- -TAG_BMBAD = 0x0333 # v--- --11 +-11 --11 -TAG_ATTR = 0x0400 ## v--- -1-a +aaa aaaa -TAG_UATTR = 0x0400 # v--- -1-- +aaa aaaa -TAG_SATTR = 0x0500 # v--- -1-1 +aaa aaaa +TAG_INTERNAL = 0x0000 ## v--- ---- +ttt tttt +TAG_CONFIG = 0x0100 ## v--- ---1 +ttt tttt +TAG_MAGIC = 0x0131 # v--- ---1 +-11 --rr +TAG_VERSION = 0x0134 # v--- ---1 +-11 -1-- +TAG_RCOMPAT = 0x0135 # v--- ---1 +-11 -1-1 +TAG_WCOMPAT = 0x0136 # v--- ---1 +-11 -11- +TAG_OCOMPAT = 0x0137 # v--- ---1 +-11 -111 +TAG_GEOMETRY = 0x0138 # v--- ---1 +-11 1--- +TAG_NAMELIMIT = 0x0139 # v--- ---1 +-11 1--1 +TAG_FILELIMIT = 0x013a # v--- ---1 +-11 1-1- +TAG_GDELTA = 0x0200 ## v--- --1- +ttt tttt +TAG_GRMDELTA = 0x0230 # v--- --1- +-11 ---- +TAG_GBMAPDELTA = 0x0234 # v--- --1- +-11 -1rr +TAG_NAME = 0x0300 ## v--- --11 +ttt tttt +TAG_BNAME = 0x0300 # v--- --11 +--- ---- +TAG_REG = 0x0301 # v--- --11 +--- ---1 +TAG_DIR = 0x0302 # v--- --11 +--- --1- +TAG_STICKYNOTE = 0x0303 # v--- --11 +--- --11 +TAG_BOOKMARK = 0x0304 # v--- --11 +--- -1-- +TAG_MNAME = 0x0330 # v--- --11 +-11 ---- +TAG_STRUCT = 0x0400 ## v--- -1-- +ttt tttt +TAG_BRANCH = 0x0400 # v--- -1-- +--- --rr +TAG_DATA = 0x0404 # v--- -1-- +--- -1-- +TAG_BLOCK = 0x0408 # v--- -1-- +--- 1err +TAG_DID = 0x0420 # v--- -1-- +-1- ---- +TAG_BSHRUB = 0x0428 # v--- -1-- +-1- 1--- +TAG_BTREE = 0x042c # v--- -1-- +-1- 11rr +TAG_MROOT = 0x0431 # v--- -1-- +-11 --rr +TAG_MDIR = 0x0435 # v--- -1-- +-11 -1rr +TAG_MTREE = 0x043c # v--- -1-- +-11 11rr +TAG_BMRANGE = 0x0440 # v--- -1-- +1-- ++uu +TAG_BMFREE = 0x0440 # v--- -1-- +1-- ---- +TAG_BMINUSE = 0x0441 # v--- -1-- +1-- ---1 +TAG_BMERASED = 0x0442 # v--- -1-- +1-- --1- +TAG_BMBAD = 0x0443 # v--- -1-- +1-- --11 +TAG_ATTR = 0x0600 ## v--- -11a +aaa aaaa +TAG_UATTR = 0x0600 # v--- -11- +aaa aaaa +TAG_SATTR = 0x0700 # v--- -111 +aaa aaaa TAG_SHRUB = 0x1000 ## v--1 kkkk +kkk kkkk TAG_ALT = 0x4000 ## v1cd kkkk +kkk kkkk TAG_B = 0x0000 diff --git a/scripts/dbgrbyd.py b/scripts/dbgrbyd.py index 38d642e6..ff693912 100755 --- a/scripts/dbgrbyd.py +++ b/scripts/dbgrbyd.py @@ -29,43 +29,44 @@ COLORS = [ TAG_NULL = 0x0000 ## v--- ---- +--- ---- -TAG_CONFIG = 0x0000 ## v--- ---- +ttt tttt -TAG_MAGIC = 0x0031 # v--- ---- +-11 --rr -TAG_VERSION = 0x0034 # v--- ---- +-11 -1-- -TAG_RCOMPAT = 0x0035 # v--- ---- +-11 -1-1 -TAG_WCOMPAT = 0x0036 # v--- ---- +-11 -11- -TAG_OCOMPAT = 0x0037 # v--- ---- +-11 -111 -TAG_GEOMETRY = 0x0038 # v--- ---- +-11 1--- -TAG_NAMELIMIT = 0x0039 # v--- ---- +-11 1--1 -TAG_FILELIMIT = 0x003a # v--- ---- +-11 1-1- -TAG_GDELTA = 0x0100 ## v--- ---1 +ttt ttrr -TAG_GRMDELTA = 0x0100 # v--- ---1 +--- ---- -TAG_GBMAPDELTA = 0x0104 # v--- ---1 +--- -1rr -TAG_NAME = 0x0200 ## v--- --1- +ttt tttt -TAG_BNAME = 0x0200 # v--- --1- +--- ---- -TAG_REG = 0x0201 # v--- --1- +--- ---1 -TAG_DIR = 0x0202 # v--- --1- +--- --1- -TAG_STICKYNOTE = 0x0203 # v--- --1- +--- --11 -TAG_BOOKMARK = 0x0204 # v--- --1- +--- -1-- -TAG_MNAME = 0x0220 # v--- --1- +-1- ---- -TAG_STRUCT = 0x0300 ## v--- --11 +ttt ttrr -TAG_BRANCH = 0x0300 # v--- --11 +--- --rr -TAG_DATA = 0x0304 # v--- --11 +--- -1-- -TAG_BLOCK = 0x0308 # v--- --11 +--- 1err -TAG_DID = 0x0314 # v--- --11 +--1 -1-- -TAG_BSHRUB = 0x0318 # v--- --11 +--1 1--- -TAG_BTREE = 0x031c # v--- --11 +--1 11rr -TAG_MROOT = 0x0321 # v--- --11 +-1- --rr -TAG_MDIR = 0x0325 # v--- --11 +-1- -1rr -TAG_MTREE = 0x032c # v--- --11 +-1- 11rr -TAG_BMRANGE = 0x0330 # v--- --11 +-11 ++uu -TAG_BMFREE = 0x0330 # v--- --11 +-11 ---- -TAG_BMINUSE = 0x0331 # v--- --11 +-11 ---1 -TAG_BMERASED = 0x0332 # v--- --11 +-11 --1- -TAG_BMBAD = 0x0333 # v--- --11 +-11 --11 -TAG_ATTR = 0x0400 ## v--- -1-a +aaa aaaa -TAG_UATTR = 0x0400 # v--- -1-- +aaa aaaa -TAG_SATTR = 0x0500 # v--- -1-1 +aaa aaaa +TAG_INTERNAL = 0x0000 ## v--- ---- +ttt tttt +TAG_CONFIG = 0x0100 ## v--- ---1 +ttt tttt +TAG_MAGIC = 0x0131 # v--- ---1 +-11 --rr +TAG_VERSION = 0x0134 # v--- ---1 +-11 -1-- +TAG_RCOMPAT = 0x0135 # v--- ---1 +-11 -1-1 +TAG_WCOMPAT = 0x0136 # v--- ---1 +-11 -11- +TAG_OCOMPAT = 0x0137 # v--- ---1 +-11 -111 +TAG_GEOMETRY = 0x0138 # v--- ---1 +-11 1--- +TAG_NAMELIMIT = 0x0139 # v--- ---1 +-11 1--1 +TAG_FILELIMIT = 0x013a # v--- ---1 +-11 1-1- +TAG_GDELTA = 0x0200 ## v--- --1- +ttt tttt +TAG_GRMDELTA = 0x0230 # v--- --1- +-11 ---- +TAG_GBMAPDELTA = 0x0234 # v--- --1- +-11 -1rr +TAG_NAME = 0x0300 ## v--- --11 +ttt tttt +TAG_BNAME = 0x0300 # v--- --11 +--- ---- +TAG_REG = 0x0301 # v--- --11 +--- ---1 +TAG_DIR = 0x0302 # v--- --11 +--- --1- +TAG_STICKYNOTE = 0x0303 # v--- --11 +--- --11 +TAG_BOOKMARK = 0x0304 # v--- --11 +--- -1-- +TAG_MNAME = 0x0330 # v--- --11 +-11 ---- +TAG_STRUCT = 0x0400 ## v--- -1-- +ttt tttt +TAG_BRANCH = 0x0400 # v--- -1-- +--- --rr +TAG_DATA = 0x0404 # v--- -1-- +--- -1-- +TAG_BLOCK = 0x0408 # v--- -1-- +--- 1err +TAG_DID = 0x0420 # v--- -1-- +-1- ---- +TAG_BSHRUB = 0x0428 # v--- -1-- +-1- 1--- +TAG_BTREE = 0x042c # v--- -1-- +-1- 11rr +TAG_MROOT = 0x0431 # v--- -1-- +-11 --rr +TAG_MDIR = 0x0435 # v--- -1-- +-11 -1rr +TAG_MTREE = 0x043c # v--- -1-- +-11 11rr +TAG_BMRANGE = 0x0440 # v--- -1-- +1-- ++uu +TAG_BMFREE = 0x0440 # v--- -1-- +1-- ---- +TAG_BMINUSE = 0x0441 # v--- -1-- +1-- ---1 +TAG_BMERASED = 0x0442 # v--- -1-- +1-- --1- +TAG_BMBAD = 0x0443 # v--- -1-- +1-- --11 +TAG_ATTR = 0x0600 ## v--- -11a +aaa aaaa +TAG_UATTR = 0x0600 # v--- -11- +aaa aaaa +TAG_SATTR = 0x0700 # v--- -111 +aaa aaaa TAG_SHRUB = 0x1000 ## v--1 kkkk +kkk kkkk TAG_ALT = 0x4000 ## v1cd kkkk +kkk kkkk TAG_B = 0x0000 diff --git a/scripts/dbgtag.py b/scripts/dbgtag.py index 066408cf..647c4b4a 100755 --- a/scripts/dbgtag.py +++ b/scripts/dbgtag.py @@ -13,43 +13,44 @@ import sys TAG_NULL = 0x0000 ## v--- ---- +--- ---- -TAG_CONFIG = 0x0000 ## v--- ---- +ttt tttt -TAG_MAGIC = 0x0031 # v--- ---- +-11 --rr -TAG_VERSION = 0x0034 # v--- ---- +-11 -1-- -TAG_RCOMPAT = 0x0035 # v--- ---- +-11 -1-1 -TAG_WCOMPAT = 0x0036 # v--- ---- +-11 -11- -TAG_OCOMPAT = 0x0037 # v--- ---- +-11 -111 -TAG_GEOMETRY = 0x0038 # v--- ---- +-11 1--- -TAG_NAMELIMIT = 0x0039 # v--- ---- +-11 1--1 -TAG_FILELIMIT = 0x003a # v--- ---- +-11 1-1- -TAG_GDELTA = 0x0100 ## v--- ---1 +ttt ttrr -TAG_GRMDELTA = 0x0100 # v--- ---1 +--- ---- -TAG_GBMAPDELTA = 0x0104 # v--- ---1 +--- -1rr -TAG_NAME = 0x0200 ## v--- --1- +ttt tttt -TAG_BNAME = 0x0200 # v--- --1- +--- ---- -TAG_REG = 0x0201 # v--- --1- +--- ---1 -TAG_DIR = 0x0202 # v--- --1- +--- --1- -TAG_STICKYNOTE = 0x0203 # v--- --1- +--- --11 -TAG_BOOKMARK = 0x0204 # v--- --1- +--- -1-- -TAG_MNAME = 0x0220 # v--- --1- +-1- ---- -TAG_STRUCT = 0x0300 ## v--- --11 +ttt ttrr -TAG_BRANCH = 0x0300 # v--- --11 +--- --rr -TAG_DATA = 0x0304 # v--- --11 +--- -1-- -TAG_BLOCK = 0x0308 # v--- --11 +--- 1err -TAG_DID = 0x0314 # v--- --11 +--1 -1-- -TAG_BSHRUB = 0x0318 # v--- --11 +--1 1--- -TAG_BTREE = 0x031c # v--- --11 +--1 11rr -TAG_MROOT = 0x0321 # v--- --11 +-1- --rr -TAG_MDIR = 0x0325 # v--- --11 +-1- -1rr -TAG_MTREE = 0x032c # v--- --11 +-1- 11rr -TAG_BMRANGE = 0x0330 # v--- --11 +-11 ++uu -TAG_BMFREE = 0x0330 # v--- --11 +-11 ---- -TAG_BMINUSE = 0x0331 # v--- --11 +-11 ---1 -TAG_BMERASED = 0x0332 # v--- --11 +-11 --1- -TAG_BMBAD = 0x0333 # v--- --11 +-11 --11 -TAG_ATTR = 0x0400 ## v--- -1-a +aaa aaaa -TAG_UATTR = 0x0400 # v--- -1-- +aaa aaaa -TAG_SATTR = 0x0500 # v--- -1-1 +aaa aaaa +TAG_INTERNAL = 0x0000 ## v--- ---- +ttt tttt +TAG_CONFIG = 0x0100 ## v--- ---1 +ttt tttt +TAG_MAGIC = 0x0131 # v--- ---1 +-11 --rr +TAG_VERSION = 0x0134 # v--- ---1 +-11 -1-- +TAG_RCOMPAT = 0x0135 # v--- ---1 +-11 -1-1 +TAG_WCOMPAT = 0x0136 # v--- ---1 +-11 -11- +TAG_OCOMPAT = 0x0137 # v--- ---1 +-11 -111 +TAG_GEOMETRY = 0x0138 # v--- ---1 +-11 1--- +TAG_NAMELIMIT = 0x0139 # v--- ---1 +-11 1--1 +TAG_FILELIMIT = 0x013a # v--- ---1 +-11 1-1- +TAG_GDELTA = 0x0200 ## v--- --1- +ttt tttt +TAG_GRMDELTA = 0x0230 # v--- --1- +-11 ---- +TAG_GBMAPDELTA = 0x0234 # v--- --1- +-11 -1rr +TAG_NAME = 0x0300 ## v--- --11 +ttt tttt +TAG_BNAME = 0x0300 # v--- --11 +--- ---- +TAG_REG = 0x0301 # v--- --11 +--- ---1 +TAG_DIR = 0x0302 # v--- --11 +--- --1- +TAG_STICKYNOTE = 0x0303 # v--- --11 +--- --11 +TAG_BOOKMARK = 0x0304 # v--- --11 +--- -1-- +TAG_MNAME = 0x0330 # v--- --11 +-11 ---- +TAG_STRUCT = 0x0400 ## v--- -1-- +ttt tttt +TAG_BRANCH = 0x0400 # v--- -1-- +--- --rr +TAG_DATA = 0x0404 # v--- -1-- +--- -1-- +TAG_BLOCK = 0x0408 # v--- -1-- +--- 1err +TAG_DID = 0x0420 # v--- -1-- +-1- ---- +TAG_BSHRUB = 0x0428 # v--- -1-- +-1- 1--- +TAG_BTREE = 0x042c # v--- -1-- +-1- 11rr +TAG_MROOT = 0x0431 # v--- -1-- +-11 --rr +TAG_MDIR = 0x0435 # v--- -1-- +-11 -1rr +TAG_MTREE = 0x043c # v--- -1-- +-11 11rr +TAG_BMRANGE = 0x0440 # v--- -1-- +1-- ++uu +TAG_BMFREE = 0x0440 # v--- -1-- +1-- ---- +TAG_BMINUSE = 0x0441 # v--- -1-- +1-- ---1 +TAG_BMERASED = 0x0442 # v--- -1-- +1-- --1- +TAG_BMBAD = 0x0443 # v--- -1-- +1-- --11 +TAG_ATTR = 0x0600 ## v--- -11a +aaa aaaa +TAG_UATTR = 0x0600 # v--- -11- +aaa aaaa +TAG_SATTR = 0x0700 # v--- -111 +aaa aaaa TAG_SHRUB = 0x1000 ## v--1 kkkk +kkk kkkk TAG_ALT = 0x4000 ## v1cd kkkk +kkk kkkk TAG_B = 0x0000