void finish_export(utime_t now);
void abort_export() {
put(PIN_TEMPEXPORTING);
+ assert(state_test(STATE_EXPORTINGCAPS));
+ state_clear(STATE_EXPORTINGCAPS);
+ put(PIN_EXPORTINGCAPS);
}
void decode_import(bufferlist::iterator& p, LogSegment *ls);
void Migrator::encode_export_inode_caps(CInode *in, bufferlist& bl,
map<client_t,entity_inst_t>& exported_client_map)
{
+ dout(20) << "encode_export_inode_caps " << *in << dendl;
+
// encode caps
map<client_t,Capability::Export> cap_map;
in->export_client_caps(cap_map);
void Migrator::finish_export_inode_caps(CInode *in)
{
+ dout(20) << "finish_export_inode_caps " << *in << dendl;
+
in->state_clear(CInode::STATE_EXPORTINGCAPS);
in->put(CInode::PIN_EXPORTINGCAPS);
dir->abort_export();
for (CDir::map_t::iterator p = dir->items.begin(); p != dir->items.end(); ++p) {
p->second->abort_export();
- if (!p->second->get_linkage()->is_primary()) continue;
+ if (!p->second->get_linkage()->is_primary())
+ continue;
CInode *in = p->second->get_linkage()->get_inode();
in->abort_export();
if (in->is_dir())
p != import_caps[dir].end();
++p) {
CInode *in = p->first;
+ dout(20) << " reexporting caps on " << *in << dendl;
/*
* bleh.. just export all caps for this inode. the auth mds
* will pick them up during recovery.