]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
uclient: fix cap reconnect
authorSage Weil <sage@newdream.net>
Fri, 26 Jun 2009 18:40:35 +0000 (11:40 -0700)
committerSage Weil <sage@newdream.net>
Fri, 26 Jun 2009 18:43:37 +0000 (11:43 -0700)
Pass cap_id to the mds.  Otherwise all subsequent cap ops will
fail due to the mismatch.

src/client/Client.cc
src/mds/mdstypes.h
src/messages/MClientReconnect.h

index a3d11b3cff3f4d56f267365d2eadb9a542a093e4..2ac2a31d21b23fec5340c0ace936d641416ab8d3 100644 (file)
@@ -1170,7 +1170,8 @@ void Client::send_reconnect(int mds)
        dout(10) << "    path " << path << dendl;
 
        in->caps[mds]->seq = 0;  // reset seq.
-       m->add_cap(p->first.ino, path.get_ino(), path.get_path(),   // ino
+       m->add_cap(p->first.ino, in->caps[mds]->cap_id,
+                  path.get_ino(), path.get_path(),   
                   in->caps_wanted(), // wanted
                   in->caps[mds]->issued,     // issued
                   in->inode.size, in->inode.mtime, in->inode.atime, in->snaprealm->ino);
index 92754860b5e43ae9650a1e814271861b692cc892..44d3eb592ee56b9d45e914521645d6b190da08c4 100644 (file)
@@ -624,8 +624,9 @@ struct cap_reconnect_t {
   ceph_mds_cap_reconnect capinfo;
 
   cap_reconnect_t() {}
-  cap_reconnect_t(inodeno_t pino, const string& p, int w, int i, uint64_t sz, utime_t mt, utime_t at, inodeno_t sr) : 
+  cap_reconnect_t(__u64 cap_id, inodeno_t pino, const string& p, int w, int i, uint64_t sz, utime_t mt, utime_t at, inodeno_t sr) : 
     path(p) {
+    capinfo.cap_id = cap_id;
     capinfo.wanted = w;
     capinfo.issued = i;
     capinfo.size = sz;
index c6388b9e7cf6b3e4f2f5121acde62d2dfc97550e..1eefb5c73b3a456e02c5325e90255dce03ea4458 100644 (file)
@@ -34,11 +34,11 @@ public:
        << caps.size() << " caps)";
   }
 
-  void add_cap(inodeno_t ino, inodeno_t pathbase, const string& path,
+  void add_cap(inodeno_t ino, __u64 cap_id, inodeno_t pathbase, const string& path,
               int wanted, int issued,
               loff_t sz, utime_t mt, utime_t at,
               inodeno_t sr) {
-    caps[ino] = cap_reconnect_t(pathbase, path, wanted, issued, sz, mt, at, sr);
+    caps[ino] = cap_reconnect_t(cap_id, pathbase, path, wanted, issued, sz, mt, at, sr);
   }
   void add_snaprealm(inodeno_t ino, snapid_t seq, inodeno_t parent) {
     ceph_mds_snaprealm_reconnect r;