m->put();
}
+/* This function DOES put the passed message before returning */
+
+ void Locker::remove_client_cap(CInode *in, client_t client)
+ {
+ // clean out any pending snapflush state
+ if (!in->client_need_snapflush.empty())
+ _do_null_snapflush(in, client, 0);
+
+ in->remove_client_cap(client);
+
+ if (in->is_auth()) {
+ // make sure we clear out the client byte range
+ if (in->get_projected_inode()->client_ranges.count(client) &&
+ !(in->inode.nlink == 0 && !in->is_any_caps())) // unless it's unlink + stray
+ check_inode_max_size(in);
+ } else {
+ request_inode_file_caps(in);
+ }
+
+ eval(in, CEPH_CAP_LOCKS);
+
+ mds->mdcache->maybe_eval_stray(in);
+ }
+
+
void Locker::handle_client_lease(MClientLease *m)
{
dout(10) << "handle_client_lease " << *m << dendl;