ceph: only release unused caps with mds requests
authorSage Weil <sage@newdream.net>
Tue, 16 Mar 2010 22:01:07 +0000 (15:01 -0700)
committerSage Weil <sage@newdream.net>
Tue, 23 Mar 2010 14:46:55 +0000 (07:46 -0700)
commit916623da10e270c7e9e802a7ddfe1ec8f890982d
tree892f703ce8a4200ab27b0c1db14f4c2057d7b2f3
parent15637c8b1251c38694c32214eba69b72a30e9d9b
ceph: only release unused caps with mds requests

We were releasing used caps (e.g. FILE_CACHE) from encode_inode_release
with MDS requests (e.g. setattr).  We don't carry refs on most caps, so
this code worked most of the time, but for setattr (utimes) we try to
drop Fscr.

This causes cap state to get slightly out of sync with reality, and may
result in subsequent mds revoke messages getting ignored.

Fix by only releasing unused caps.

Signed-off-by: Sage Weil <sage@newdream.net>
fs/ceph/caps.c