DAOS-18531 vos: setup ts_set in vos_obj_incarnate()#17957
DAOS-18531 vos: setup ts_set in vos_obj_incarnate()#17957gnailzenh merged 1 commit intorelease/2.8from
Conversation
Replace the vos_obj_hold() call before vos_obj_incarnate() with vos_obj_acquire() to ensure the ts_set setup is fully done within transaction, that can make code cleaner and avoid following race: - Updater A called vos_obj_hold(), it failed to find the OI and mark the obj entry in ts_set as negative. - Updater A yield. - Concurrent updater B created OI and setup obj->obj_df. - Updater A resumed to call vos_obj_incarnate(), it found that the obj->obj_df is non-NULL so skipped OI creation. - The ts_set for updater A is now in an inconsistent state, it's negative but without 'se_create_idx' set. Signed-off-by: Niu Yawei <[email protected]>
|
Ticket title is 'mdonssd phase 2: Assertion 'set_entry->se_create_idx != NULL' failed' |
|
Test stage NLT completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-17957/1/testReport/ |
|
Test stage Functional Hardware Medium MD on SSD completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-17957/2/testReport/ |
|
Single test failure due to Github connectivity issue. |
|
@daos-stack/daos-gatekeeper only one failure due to Github connectivity, require force landing. |
Replace the vos_obj_hold() call before vos_obj_incarnate() with vos_obj_acquire() to ensure the ts_set setup is fully done within transaction, that can make code cleaner and avoid following race:
Steps for the author:
After all prior steps are complete: