if (dir->get_dir_auth().first != mds->whoami)
continue;
- if (dir->is_ambiguous_dir_auth() &&
- migrator->is_importing(dir->dirfrag())) {
+ if (migrator->is_ambiguous_import(dir->dirfrag())) {
dout(15) << " ambig subtree " << *dir << dendl;
le->ambiguous_subtrees.insert(dir->dirfrag());
} else {
if (mds->is_resolve() && my_ambiguous_imports.count(dir->dirfrag()))
continue; // we'll add it below
- if (migrator->is_importing(dir->dirfrag())) {
+ if (migrator->is_ambiguous_import(dir->dirfrag())) {
// ambiguous (mid-import)
- // NOTE: because we are first authority, import state is at least IMPORT_LOGGINSTART.
- assert(migrator->get_import_state(dir->dirfrag()) >= Migrator::IMPORT_LOGGINGSTART);
set<CDir*> bounds;
get_subtree_bounds(dir, bounds);
vector<dirfrag_t> dfls;
}
bool is_importing() { return !import_state.empty(); }
+ bool is_ambiguous_import(dirfrag_t df) {
+ map<dirfrag_t,int>::iterator p = import_state.find(df);
+ if (p == import_state.end())
+ return false;
+ if (p->second >= IMPORT_LOGGINGSTART &&
+ p->second < IMPORT_ABORTING)
+ return true;
+ return false;
+ }
+
int get_import_state(dirfrag_t df) {
assert(import_state.count(df));
return import_state[df];