]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
mds: fix cap revoke confirmation
authorYan, Zheng <zheng.z.yan@intel.com>
Tue, 16 Jul 2013 01:37:58 +0000 (09:37 +0800)
committerYan, Zheng <zheng.z.yan@intel.com>
Mon, 5 Aug 2013 03:09:07 +0000 (11:09 +0800)
commit755581977c2bc9eb81c9d9d955024cbedded2161
treedd47113ff56cdbdab1a1c797cc87af104950963e
parent9797986697622217cb03b3420a70a49eddb6b02d
mds: fix cap revoke confirmation

There are several issues in the Capability::confirm_receipt()

1. when receiving a client caps message with 'seq == last_sent',
   it doesn't mean we finish revoking caps. The client can send
   caps message that only flushes dirty metadata.

2. When receiving a client caps message with 'seq == N', we should
   forget pending revocations whose seq numbers are less than N.
   This is because, when revoking caps, we create a revoke_info
   structure and set its seq number to 'last_sent', then increase
   the 'last_sent'.

3. When client actively releases caps (by request), the code only
   works for the 'seq == last_sent' case. If there are pending
   revocations, we should update them as if the release message
   is received before we revoke the corresponding caps.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/mds/Capability.h