]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
uclient: encode_cap_releases shouldn't update caps if inode isn't in the cache
authorGreg Farnum <gregf@hq.newdream.net>
Tue, 22 Sep 2009 00:06:14 +0000 (17:06 -0700)
committerGreg Farnum <gregf@hq.newdream.net>
Tue, 22 Sep 2009 20:02:50 +0000 (13:02 -0700)
src/client/Client.cc

index e649fc0b7b45f444e5780662baf5ed8c55ab5cd3..484e9144d4bb84688a961d0a12c5257703cad41f 100644 (file)
@@ -973,22 +973,22 @@ void Client::encode_dentry_release(Dentry *dn, MClientRequest *req,
 void Client::encode_cap_releases(MetaRequest *req, int mds) {
   dout(20) << "encode_cap_releases enter (req: "
           << req << ", mds: " << mds << ")" << dendl;
-  if (req->inode_drop)
+  if (req->inode_drop && req->inode)
     encode_inode_release(req->inode, req->request,
                         mds, req->inode_drop,
                         req->inode_unless);
   
-  if (req->old_inode_drop)
+  if (req->old_inode_drop && req->old_inode)
     encode_inode_release(req->old_inode, req->request,
                         mds, req->old_inode_drop,
                         req->old_inode_unless);
   
-  if (req->dentry_drop)
+  if (req->dentry_drop && req->dentry)
     encode_dentry_release(req->dentry, req->request,
                          mds, req->dentry_drop,
                          req->dentry_unless);
   
-  if (req->old_dentry_drop)
+  if (req->old_dentry_drop && req->old_dentry)
     encode_dentry_release(req->old_dentry, req->request,
                          mds, req->old_dentry_drop,
                          req->old_dentry_unless);