Details
-
Bug
-
Resolution: Fixed
-
Minor
-
Lustre 1.8.8
-
None
-
3
-
6200
Description
There is a code snippet from The code in mds_lov_update_objids():
if (id > data[idx]) { #ifndef HAVE_DELAYED_RECOVERY int lost = id - data[idx] - 1; /* we might have lost precreated objects due to VBR */ if (lost > 0 && obd->obd_recovering) { CDEBUG(D_HA, "GAP in objids is %u\n", lost); if (!obd->obd_version_recov) CWARN("Unexpected gap in objids\n"); /* lsm is allocated if NULL */ mds_log_lost_precreated(obd, &lsm, &stripes, data[idx] + 1, lost, i); } #endif data[idx] = id; cfs_bitmap_set(mds->mds_lov_page_dirty, page); } }
Which is not quite right, because we can't guarantee the object id is always increased in transno order, and if the lov_objid file was removed by administrator (to fix the corrupted lov_objid file), many objects could be deleted mistakenly then.