ceph: set mds_wanted when MDS reply changes a cap to auth cap
authorYan, Zheng <zheng.z.yan@intel.com>
Tue, 18 Mar 2014 02:15:29 +0000 (10:15 +0800)
committerSage Weil <sage@inktank.com>
Sat, 5 Apr 2014 04:07:12 +0000 (21:07 -0700)
When adjusting caps client wants, MDS does not record caps that are
not allowed. For non-auth MDS, it does not record WR caps. So when
a MDS reply changes a non-auth cap to auth cap, client needs to set
cap's mds_wanted according to the reply.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
fs/ceph/caps.c

index d9ef44e5474ee7e667d881c5051922a55061d36a..2e5e648eb5c3dc3bd82bea5ce8dead051864cf75 100644 (file)
@@ -622,8 +622,10 @@ retry:
 
        if (flags & CEPH_CAP_FLAG_AUTH) {
                if (ci->i_auth_cap == NULL ||
-                   ceph_seq_cmp(ci->i_auth_cap->mseq, mseq) < 0)
+                   ceph_seq_cmp(ci->i_auth_cap->mseq, mseq) < 0) {
                        ci->i_auth_cap = cap;
+                       cap->mds_wanted = wanted;
+               }
                ci->i_cap_exporting_issued = 0;
        } else {
                WARN_ON(ci->i_auth_cap == cap);