* @param want - min version i want committed
* @param c - callback for completion
*/
-void CDir::commit(version_t want, Context *c)
+void CDir::commit(version_t want, Context *c, bool ignore_authpinnability)
{
dout(10) << "commit want " << want << " on " << *this << dendl;
if (want == 0) want = get_version();
assert(want <= get_version() || get_version() == 0); // can't commit the future
assert(want > committed_version); // the caller is stupid
assert(is_auth());
- assert(can_auth_pin());
+ assert(ignore_authpinnability || can_auth_pin());
// note: queue up a noop if necessary, so that we always
// get an auth_pin.
map<version_t, list<Context*> > waiting_for_commit;
void commit_to(version_t want);
- void commit(version_t want, Context *c);
+ void commit(version_t want, Context *c, bool ignore_authpinnability=false);
void _commit(version_t want);
void _commit_full(ObjectOperation& m, const set<snapid_t> *snaps);
void _commit_partial(ObjectOperation& m, const set<snapid_t> *snaps);
CDir *dir = *p;
dout(10) << " result frag " << *dir << dendl;
dir->state_set(CDir::STATE_FRAGMENTING);
- dir->commit(0, gather->new_sub());
+ dir->commit(0, gather->new_sub(), true); // ignore authpinnability
dir->_freeze_dir();
}
}