From: "Yan, Zheng" <zheng.z.yan@xxxxxxxxx> The MDS may have incorrect wanted caps after importing caps. So the client should check the value mds has and send cap update if necessary. Signed-off-by: Yan, Zheng <zheng.z.yan@xxxxxxxxx> --- fs/ceph/caps.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c index 7e90299..16c10f8 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c @@ -2425,10 +2425,12 @@ static void handle_cap_grant(struct inode *inode, struct ceph_mds_caps *grant, ceph_cap_string(used), ceph_cap_string(dirty)); if (wanted != le32_to_cpu(grant->wanted)) { - dout("mds wanted %s -> %s\n", - ceph_cap_string(le32_to_cpu(grant->wanted)), - ceph_cap_string(wanted)); - grant->wanted = cpu_to_le32(wanted); + dout("mds wanted = %s\n", + ceph_cap_string(le32_to_cpu(grant->wanted))); + /* imported cap may not have correct mds_wanted */ + if (cap == ci->i_auth_cap && + (wanted & ~(cap->mds_wanted | cap->issued))) + check_caps = 1; } cap->seq = seq; -- 1.7.11.7 -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html