On Mon, 6 Dec 2004, Erik Greenwald wrote: > > 1545 if (dtog(fs, bno) != cg) > > 1546 panic("ffs_clusteralloc: allocated out of group"); > > a couple weeks ago, when I found the issue, I tried dumping that line > using a printf and got > > dtog(0xc4896800, -1894026712) != 25518 > > (I think I used %x, %d, %d) Unfortunately bno is a int64_t (via ufs2_daddr_t) so that value is incorrect. > I've no idea what those #'s mean, and couldn't find any documentation on > 'dtog' (something to group?) dtog translates a filesystem block to a cylinder group: #define dtog(fs, d) ((d) / (fs)->fs_fpg) (fpg is frags per group) bno comes from: bno = cg * fs->fs_fpg + blkstofrags(fs, got - run + 1); That seems more likely to overflow or be the victim of a bad cast since everything on the rhs are ints. blkstofrags is a bit-shift. a 'bt full' would print all this, but if you have to instrument then this should be a good start. > I have a kernel with the DEBUG=-g option, (and config -g), can't get the > dang thing to dump, though It might help if you put the dump volume on something other than the gigantic array, in case stuff is getting tied up there because of the ffs problem. -- Doug White | FreeBSD: The Power to Serve dwhite_at_gumbysoft.com | www.FreeBSD.orgReceived on Tue Dec 07 2004 - 01:42:58 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:24 UTC