client: fix deadlock related to async pagecache invalidation
Conflicts:
src/client/Client.cc
Fixed a conflict with the earlier page cache invalidate
changes in
73beb7f9378182cc3901fe86c4f1f5d5d98169a6.
Reviewed-by: Greg Farnum <gfarnum@redhat.com>
if (last & CEPH_CAP_FILE_CACHE) {
ldout(cct, 5) << "put_cap_ref dropped last FILE_CACHE ref on " << *in << dendl;
++put_nref;
- // release clean pages too, if we dont want RDCACHE
- if (!(in->caps_wanted() & CEPH_CAP_FILE_CACHE))
- drop |= CEPH_CAP_FILE_CACHE;
}
- if (drop) {
- if (drop & CEPH_CAP_FILE_CACHE)
- _invalidate_inode_cache(in);
+ if (drop)
- check_caps(in, false);
+ check_caps(in, false);
- }
if (put_nref)
put_inode(in, put_nref);
}