-void Locker::_do_null_snapflush(CInode *head_in, client_t client, snapid_t follows)
+void Locker::_do_null_snapflush(CInode *head_in, client_t client)
{
- dout(10) << "_do_null_snapflish client." << client << " follows " << follows << " on " << *head_in << dendl;
+ dout(10) << "_do_null_snapflush client." << client << " on " << *head_in << dendl;
compact_map<snapid_t, set<client_t> >::iterator p = head_in->client_need_snapflush.begin();
while (p != head_in->client_need_snapflush.end()) {
snapid_t snapid = p->first;
set<client_t>& clients = p->second;
++p; // be careful, q loop below depends on this
- // snapid is the snap inode's ->last
- if (follows > snapid)
- break;
if (clients.count(client)) {
dout(10) << " doing async NULL snapflush on " << snapid << " from client." << client << dendl;
CInode *sin = mdcache->get_inode(head_in->ino(), snapid);
// update/release).
if (!head_in->client_need_snapflush.empty()) {
if ((cap->issued() & CEPH_CAP_ANY_FILE_WR) == 0) {
- _do_null_snapflush(head_in, client, follows);
+ _do_null_snapflush(head_in, client);
} else {
dout(10) << " revocation in progress, not making any conclusions about null snapflushes" << dendl;
}
{
// clean out any pending snapflush state
if (!in->client_need_snapflush.empty())
- _do_null_snapflush(in, client, 0);
+ _do_null_snapflush(in, client);
in->remove_client_cap(client);
void handle_client_caps(class MClientCaps *m);
void _update_cap_fields(CInode *in, int dirty, MClientCaps *m, inode_t *pi);
void _do_snap_update(CInode *in, snapid_t snap, int dirty, snapid_t follows, client_t client, MClientCaps *m, MClientCaps *ack);
- void _do_null_snapflush(CInode *head_in, client_t client, snapid_t follows);
+ void _do_null_snapflush(CInode *head_in, client_t client);
bool _do_cap_update(CInode *in, Capability *cap, int dirty, snapid_t follows, MClientCaps *m,
MClientCaps *ack=0);
void handle_client_cap_release(class MClientCapRelease *m);