The namespace LFSCK may cannot rebuild the FID-in-dirent for dotdot
entry after the MDT restored from file-level backup, because there
is not enough space in the directory head area.
Lustre-change: http://review.whamcloud.com/9748
Lustre-commit:
7dec22d474faa50e1a7fb6b377ceb1310b76a8e8
Signed-off-by: Fan Yong <fan.yong@intel.com>
Change-Id: Iedf3b140a1dcc9fd77b40dbdf3dee52a44b5814b
Reviewed-on: http://review.whamcloud.com/11006
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Emoly Liu <emoly.liu@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
} else {
attr &= ~LU_DIRENT_ATTRS_MASK;
if (!fid_is_sane(fid)) {
- if (OBD_FAIL_CHECK(OBD_FAIL_FID_LOOKUP))
+ if (OBD_FAIL_CHECK(OBD_FAIL_FID_LOOKUP) &&
+ likely(it->oie_dirent->oied_namelen != 2 ||
+ it->oie_dirent->oied_name[0] != '.' ||
+ it->oie_dirent->oied_name[1] != '.'))
RETURN(-ENOENT);
rc = osd_ea_fid_get(env, obj, ino, fid, id);
do_facet $SINGLEMDS $LCTL set_param fail_loc=0x1505
ls $DIR/$tdir/ > /dev/null || error "(11) no FID-in-dirent."
+ local count=$(ls -al $DIR/$tdir | wc -l)
+ [ $count -gt 9 ] || error "(12) namespace LFSCK failed"
+
do_facet $SINGLEMDS $LCTL set_param fail_loc=0
}
run_test 4 "FID-in-dirent can be rebuilt after MDT file-level backup/restore"