----- Original Message ----- > Reviving the thread "kernel BUG at fs/gfs2/inode.h:64" from January [1]... > > We finally hit the assertion in gfs2_add_inode_blocks() after it has > been fixed. Debug logging showed that in sweep_bh_for_rgrps(): > > blen = 1 > isize_blks = 0 > > which is then used as follows: > > __gfs2_free_blocks(ip, bstart, (u32)blen, meta); > (*btotal) += blen; > gfs2_add_inode_blocks(&ip->i_inode, -blen); > > This confirms Tim's suspicion that i_blocks is already 0 at the > point we're trying to free a block. > > Any ideas on how this situation may have occurred? The test case > power-cycles hosts so perhaps this is some form of corruption that > would be fixed by Bob's recovery patch series? > > [1] https://www.redhat.com/archives/cluster-devel/2019-January/msg00007.html > > Thanks, > -- > Ross Lagerwall
Hi Ross, It's very possible that the corruption is due to one of the many problems I've found with journal replay. The solution is first to fix the file system with fsck.gfs2, and perhaps then try one of my newer recovery kernels. My latest upstream version is for-next.recovery13c and it's been pretty well tested. I've been working on additional patches, but hopefully you won't need them for what you're doing. Regards, Bob Peterson Red Hat File Systems
