dout(0) << "_fetched missing object for " << *this << dendl;
clog->error() << "dir " << dirfrag() << " object missing on disk; some files may be lost\n";
- state_set(STATE_BADFRAG);
- // mark complete, !fetching
- mark_complete();
- state_clear(STATE_FETCHING);
- auth_unpin(this);
-
- // kick waiters
- finish_waiting(WAIT_COMPLETE, 0);
+ go_bad();
return;
}
finish_waiting(WAIT_COMPLETE, 0);
}
-
+void CDir::go_bad()
+{
+ state_set(STATE_BADFRAG);
+ // mark complete, !fetching
+ mark_complete();
+ state_clear(STATE_FETCHING);
+ auth_unpin(this);
+
+ // kick waiters
+ finish_waiting(WAIT_COMPLETE, 0);
+}
// -----------------------
// COMMIT
const std::set<snapid_t> *snaps,
bool *force_dirty,
list<CInode*> *undef_inodes);
+
+ /**
+ * Mark this fragment as BADFRAG
+ */
+ void go_bad();
+
void _omap_fetched(bufferlist& hdrbl, std::map<std::string, bufferlist>& omap,
const std::string& want_dn, int r);
void _tmap_fetch(const std::string& want_dn);