Merge remote-tracking branch 'gh/next'

This commit is contained in:
Sage Weil 2013-04-04 22:22:43 -07:00
commit 1f2d5bba5b
2 changed files with 15 additions and 1 deletions

View File

@ -1890,6 +1890,8 @@ void Client::handle_mds_map(MMDSMap* m)
kick_requests(p->second, false);
kick_flushing_caps(p->second);
signal_cond_list(p->second->waiting_for_open);
kick_maxsize_requests(p->second);
wake_inode_waiters(p->second);
}
connect_mds_targets(p->first);
}
@ -2230,7 +2232,7 @@ int Client::get_caps(Inode *in, int need, int want, int *phave, loff_t endoff)
}
if (endoff >= 0 && endoff > (loff_t)in->max_size) {
ldout(cct, 10) << "waiting on max_size, endoff " << endoff << " max_size " << in->max_size << dendl;
ldout(cct, 10) << "waiting on max_size, endoff " << endoff << " max_size " << in->max_size << " on " << *in << dendl;
} else if (!in->cap_snaps.empty() && in->cap_snaps.rbegin()->second->writing) {
ldout(cct, 10) << "waiting on cap_snap write to complete" << dendl;
} else {
@ -3031,6 +3033,17 @@ void Client::kick_flushing_caps(MetaSession *session)
}
}
void Client::kick_maxsize_requests(MetaSession *session)
{
xlist<Cap*>::iterator iter = session->caps.begin();
while (!iter.end()){
(*iter)->inode->requested_max_size = 0;
(*iter)->inode->wanted_max_size = 0;
signal_cond_list((*iter)->inode->waitfor_caps);
++iter;
}
}
void SnapRealm::build_snap_context()
{
set<snapid_t> snaps;

View File

@ -426,6 +426,7 @@ protected:
void flush_caps();
void flush_caps(Inode *in, MetaSession *session);
void kick_flushing_caps(MetaSession *session);
void kick_maxsize_requests(MetaSession *session);
int get_caps(Inode *in, int need, int want, int *have, loff_t endoff);
void maybe_update_snaprealm(SnapRealm *realm, snapid_t snap_created, snapid_t snap_highwater,