diff --git a/src/vos/vos_obj.c b/src/vos/vos_obj.c index bdc45b071ef..4d376d79551 100644 --- a/src/vos/vos_obj.c +++ b/src/vos/vos_obj.c @@ -494,6 +494,16 @@ vos_obj_punch(daos_handle_t coh, daos_unit_oid_t oid, daos_epoch_t epoch, if (rc != 0) goto reset; + if (!(hold_flags & VOS_OBJ_CREATE) && (obj->obj_df == NULL)) { + rc = vos_ilog_ts_add(ts_set, NULL, &oid, sizeof(oid)); + D_ASSERT(rc == 0); + + rc = -DER_NONEXIST; + vos_obj_release(obj, 0, true); + obj = NULL; + goto reset; + } + rc = vos_tx_begin(dth, vos_cont2umm(cont), cont->vc_pool->vp_sysdb, obj); if (rc != 0) goto reset; diff --git a/src/vos/vos_obj_cache.c b/src/vos/vos_obj_cache.c index 002fb2e4ca9..8e4da564f66 100644 --- a/src/vos/vos_obj_cache.c +++ b/src/vos/vos_obj_cache.c @@ -545,6 +545,8 @@ vos_obj_incarnate(struct vos_object *obj, daos_epoch_range_t *epr, daos_epoch_t if (rc == 0) { obj->obj_sync_epoch = obj->obj_df->vo_sync; } else if (rc == -DER_NONEXIST) { + if (!(flags & VOS_OBJ_CREATE)) + return -DER_NONEXIST; rc = vos_oi_alloc(cont, obj->obj_id, epr->epr_hi, &obj->obj_df, ts_set); if (rc) { DL_ERROR(rc, DF_CONT ": Failed to allocate OI " DF_UOID ".",