bin/142155: dumpfs(8) drops leading 0 (zero) from superblock id
Efstratios Karatzas
gpf.kira at gmail.com
Mon Jan 4 16:30:05 UTC 2010
The following reply was made to PR bin/142155; it has been noted by GNATS.
From: Efstratios Karatzas <gpf.kira at gmail.com>
To: bug-followup at FreeBSD.org, tigger at lvlworld.com
Cc:
Subject: Re: bin/142155: dumpfs(8) drops leading 0 (zero) from superblock id
Date: Mon, 4 Jan 2010 17:51:17 +0200
--0016e6d9a0e81b15e7047c58b1cd
Content-Type: text/plain; charset=ISO-8859-1
Hi.
Not sure if this qualifies as a bug, but it's certainly a little
misleading if you want to manipulate ufsids.
The only issue here is that ufsid is the result of concatenating two
fs ids, in your example the hex numbers "4ae2d4ec" and "6f7fec5"
Each id number has a max length of 8 digits so when concatenating the
two ids to create the ufsid, a 0 is added in front of "6f7fec5" to
maintain a length of 16 characters total and actually keep the
original numbers in the ufsid. Two possible fixes:
1) Change the way you interpret the output of dumpfs(8) in a way
similar to the one described in the following link
http://www.mail-archive.com/freebsd-stable@freebsd.org/msg106566.html
Notice the "printf %0x $((0x\1 << 32 | 0x\2))/p" part, simple bitwise operations
2) Apply my patch and recompile dumpfs so that if one of the ids has
fewer than 8 digits, leading zeros are always printed. That way your
script doesn't have to do anything "special"
Elaboration:
In dumpfs.c, line 153
printf("superblock location\t%jd\tid\t[ %x %x ]\n",
(intmax_t)afs.fs_sblockloc, afs.fs_id[0], afs.fs_id[1]);
You can see it's printing two variables in hex (%x = unsigned hex number)
The fs_id array is of type int32_t so the maximum value has 8 digits.
Hope this helps, reply if somehow you still have a problem.
--
Efstratios "GPF" Karatzas
--0016e6d9a0e81b15e7047c58b1cd
Content-Type: application/octet-stream; name="dumpfs_patch.diff"
Content-Disposition: attachment; filename="dumpfs_patch.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g41fb7k30
KioqIGR1bXBmcy5vcmlnLmMJTW9uIEphbiAgNCAxNzowNToxNCAyMDEwCi0tLSBkdW1wZnMuYwlN
b24gSmFuICA0IDE3OjA3OjA1IDIwMTAKKioqKioqKioqKioqKioqCioqKiAxNTAsMTU2ICoqKioK
ICAJCWZzdGltZSA9IGFmcy5mc190aW1lOwogIAkJcHJpbnRmKCJtYWdpY1x0JXggKFVGUzIpXHR0
aW1lXHQlcyIsCiAgCQkgICAgYWZzLmZzX21hZ2ljLCBjdGltZSgmZnN0aW1lKSk7CiEgCQlwcmlu
dGYoInN1cGVyYmxvY2sgbG9jYXRpb25cdCVqZFx0aWRcdFsgJXggJXggXVxuIiwKICAJCSAgICAo
aW50bWF4X3QpYWZzLmZzX3NibG9ja2xvYywgYWZzLmZzX2lkWzBdLCBhZnMuZnNfaWRbMV0pOwog
IAkJcHJpbnRmKCJuY2dcdCVkXHRzaXplXHQlamRcdGJsb2Nrc1x0JWpkXG4iLAogIAkJICAgIGFm
cy5mc19uY2csIChpbnRtYXhfdClmc3NpemUsIChpbnRtYXhfdClhZnMuZnNfZHNpemUpOwotLS0g
MTUwLDE1NiAtLS0tCiAgCQlmc3RpbWUgPSBhZnMuZnNfdGltZTsKICAJCXByaW50ZigibWFnaWNc
dCV4IChVRlMyKVx0dGltZVx0JXMiLAogIAkJICAgIGFmcy5mc19tYWdpYywgY3RpbWUoJmZzdGlt
ZSkpOwohIAkJcHJpbnRmKCJzdXBlcmJsb2NrIGxvY2F0aW9uXHQlamRcdGlkXHRbICUwOHggJTA4
eCBdXG4iLAogIAkJICAgIChpbnRtYXhfdClhZnMuZnNfc2Jsb2NrbG9jLCBhZnMuZnNfaWRbMF0s
IGFmcy5mc19pZFsxXSk7CiAgCQlwcmludGYoIm5jZ1x0JWRcdHNpemVcdCVqZFx0YmxvY2tzXHQl
amRcbiIsCiAgCQkgICAgYWZzLmZzX25jZywgKGludG1heF90KWZzc2l6ZSwgKGludG1heF90KWFm
cy5mc19kc2l6ZSk7Cg==
--0016e6d9a0e81b15e7047c58b1cd--
More information about the freebsd-bugs
mailing list