Details
-
Bug
-
Resolution: Unresolved
-
Minor
-
None
-
Lustre 2.4.0, Lustre 2.15.0
-
None
-
3
-
7963
Description
This is not a bug I currently see in practice but the logic should be fixed as explained below. Probably OBD_MD_FLID is always set.
In ll_update_inode() ino and generation are set up top
inode->i_ino = cl_fid_build_ino(&body->fid1, ll_need_32bit_api(sbi)); inode->i_generation = cl_fid_build_gen(&body->fid1);
and later we check OBD_MD_FLID
if (body->valid & OBD_MD_FLID) {
/* FID shouldn't be changed! */
if (fid_is_sane(&lli->lli_fid)) {
LASSERTF(lu_fid_eq(&lli->lli_fid, &body->fid1),
"Trying to change FID "DFID
" to the "DFID", inode %lu/%u(%p)\n",
PFID(&lli->lli_fid), PFID(&body->fid1),
inode->i_ino, inode->i_generation, inode);
} else
lli->lli_fid = body->fid1;
}
So if the wrong fid is applied to the object (as in LU-2523) then the assertion prints the wrong ino and generation.