ceph: always re-send cap flushes when MDS recovers
authorYan, Zheng <zyan@redhat.com>
Mon, 20 Jul 2015 01:50:58 +0000 (09:50 +0800)
committerIlya Dryomov <idryomov@gmail.com>
Fri, 31 Jul 2015 08:38:53 +0000 (11:38 +0300)
commitfc927cd32feca2acefd90a4ac317fa4f0a2e5955
treed3b9294d5c7ed7f4fef3b261a2d7e4f27ca8a582
parentf6762cb2ca48e9052b5233c338fa254fa58d8981
ceph: always re-send cap flushes when MDS recovers

commit e548e9b93d3e565e42b938a99804114565be1f81 makes the kclient
only re-send cap flush once during MDS failover. If the kclient sends
a cap flush after MDS enters reconnect stage but before MDS recovers.
The kclient will skip re-sending the same cap flush when MDS recovers.

This causes problem for newly created inode. The MDS handles cap
flushes before replaying unsafe requests, so it's possible that MDS
find corresponding inode is missing when handling cap flush. The fix
is reverting to old behaviour: always re-send when MDS recovers

Signed-off-by: Yan, Zheng <zyan@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/caps.c
fs/ceph/super.h