bufferlist data;
lock->encode_locked_state(data);
mds->send_message_mds(new MLock(lock, LOCK_AC_LOCKACK, mds->get_nodeid(), data), auth);
+ ((ScatterLock *)lock)->start_flush();
}
break;
lock->decode_locked_state(m->get_data());
lock->set_state(LOCK_SYNC);
+ ((ScatterLock *)lock)->finish_flush();
+
lock->get_rdlock();
lock->finish_waiters(SimpleLock::WAIT_RD|SimpleLock::WAIT_STABLE);
lock->put_rdlock();
lock->decode_locked_state(m->get_data());
lock->set_state(LOCK_MIX);
+ ((ScatterLock *)lock)->finish_flush();
+
if (caps)
issue_caps(in);
dirty = false;
}
void finish_flush() {
- flushing = false;
- if (!dirty) {
- parent->put(MDSCacheObject::PIN_DIRTYSCATTERED);
- parent->clear_dirty_scattered(type);
+ if (flushing) {
+ flushing = false;
+ if (!dirty) {
+ parent->put(MDSCacheObject::PIN_DIRTYSCATTERED);
+ parent->clear_dirty_scattered(type);
+ }
}
}
void clear_dirty() {