LASSERT(exp != NULL);
skip_orphan = !!(exp_connect_flags(exp) & OBD_CONNECT_SKIP_ORPHAN);
+ if (OBD_FAIL_CHECK(OBD_FAIL_OST_NODESTROY))
+ goto done;
+
LCONSOLE(D_INFO, "%s: deleting orphan objects from "DOSTID
" to "DOSTID"\n", ofd_name(ofd), seq, end_id + 1, seq, last);
GOTO(out_put, rc);
rc = ofd_destroy_by_fid(env, ofd, fid, 1);
- if (rc != 0 && rc != -ENOENT) /* this is pretty fatal... */
- CEMERG("%s: error destroying precreated id "DFID
- ": rc = %d\n", ofd_name(ofd), PFID(fid), rc);
+ if (rc != 0 && rc != -ENOENT && rc != -ESTALE &&
+ likely(rc != -EREMCHG && rc != -EINPROGRESS))
+ /* this is pretty fatal... */
+ CEMERG("%s: error destroying precreated id "
+ DFID": rc = %d\n",
+ ofd_name(ofd), PFID(fid), rc);
oid--;
if (!skip_orphan) {
CDEBUG(D_HA, "%s: after destroy: set last_id to "DOSTID"\n",
ofd_name(ofd), seq, oid);
+done:
if (!skip_orphan) {
+ ofd_seq_last_oid_set(oseq, oid);
rc = ofd_seq_last_oid_write(env, ofd, oseq);
} else {
/* don't reuse orphan object, return last used objid */
obd->obd_name, osfs->os_bsize);
GOTO(err_fini_stack, rc = -EPROTO);
}
- m->ofd_blockbits = __fls(osfs->os_bsize) - 1;
+ m->ofd_blockbits = fls(osfs->os_bsize) - 1;
m->ofd_precreate_batch = OFD_PRECREATE_BATCH_DEFAULT;
if (osfs->os_bsize * osfs->os_blocks < OFD_PRECREATE_SMALL_FS)