Hi, On Thu, Aug 13, 2020 at 02:03:24PM +0800, Zorro Lang wrote: > A test fails as: > # xfs_db -c "inode 133" -c "addr" -c "p core.size" -c "type inode" -c "addr" -c "p core.size" /dev/sdb1 > current > byte offset 68096, length 512 > buffer block 128 (fsbno 16), 32 bbs > inode 133, dir inode -1, type inode > core.size = 123142 > current > byte offset 65536, length 512 > buffer block 128 (fsbno 16), 32 bbs > inode 128, dir inode 128, type inode > core.size = 42 > > The "type inode" get wrong inode addr due to it trys to get the > beginning of an inode chunk, refer to "533d1d229 xfs_db: properly set > inode type". >From the kernel side, the prefered way is commit id ("subject") > > We don't need to get the beginning of a chunk in set_iocur_type, due > to set_cur_inode(ino) will help to do all of that and make a proper > verification. We just need to give it a correct inode. > > Reported-by: Jianhong Yin <jiyin@xxxxxxxxxx> > Signed-off-by: Zorro Lang <zlang@xxxxxxxxxx> > --- > db/io.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/db/io.c b/db/io.c > index 6628d061..61940a07 100644 > --- a/db/io.c > +++ b/db/io.c > @@ -591,6 +591,7 @@ set_iocur_type( > /* Inodes are special; verifier checks all inodes in the chunk */ > if (type->typnm == TYP_INODE) { > xfs_daddr_t b = iocur_top->bb; > + int bo = iocur_top->boff; > xfs_ino_t ino; > > /* > @@ -598,7 +599,7 @@ set_iocur_type( > * which contains the current disk location; daddr may change. > */ > ino = XFS_AGINO_TO_INO(mp, xfs_daddr_to_agno(mp, b), > - ((b << BBSHIFT) >> mp->m_sb.sb_inodelog) % > + (((b << BBSHIFT) + bo) >> mp->m_sb.sb_inodelog) % > XFS_AGB_TO_AGINO(mp, mp->m_sb.sb_agblocks)); > set_cur_inode(ino); > return; Not familar with such code, but after looking into a bit, (my premature thought is that) I'm wondering if we need to reverify original buffer in if (type->fields) { ... set_cur() } iocur_top->typ = type; /* verify the buffer if the type has one. */ ... since set_cur() already verified the buffer in set_cur->libxfs_buf_read->...->libxfs_readbuf_verify? Not related to this patchset but I'm a bit curious about it now... Thanks, Gao Xiang > -- > 2.20.1 >