]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Changed cap cache handling
authoranwleung <anwleung@29311d96-e01e-0410-9327-a35deaab8ce9>
Fri, 23 Feb 2007 00:53:47 +0000 (00:53 +0000)
committeranwleung <anwleung@29311d96-e01e-0410-9327-a35deaab8ce9>
Fri, 23 Feb 2007 00:53:47 +0000 (00:53 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1119 29311d96-e01e-0410-9327-a35deaab8ce9

branches/aleung/security1/ceph/client/Client.cc
branches/aleung/security1/ceph/client/Client.h
branches/aleung/security1/ceph/mds/Locker.cc

index cf8d93b67aa8ad5c2df9b68fa5b9aca3ad7c824c..c3e2a33c36d830c350b7c7ae902bfe03480554e8 100644 (file)
@@ -2435,13 +2435,13 @@ int Client::open(const char *relpath, int flags, __int64_t uid, __int64_t gid)
     // need security caps? check if I even asked for one
     ExtCap ext_cap = reply->get_ext_cap();
     
-    cout << "Received a " << ext_cap.mode() << " capability for uid: "
+    dout(3) << "Received a " << ext_cap.mode() << " capability for uid: "
         << ext_cap.get_uid() << " for inode: " << ext_cap.get_ino() << endl;
 
     assert(ext_cap.verif_extcap(monmap->get_key()));
 
     // cache it
-    f->inode->set_ext_cap(uid, ext_cap);
+    f->inode->set_ext_cap(uid, &ext_cap);
 
     assert(reply->get_file_caps_seq() >= f->inode->caps[mds].seq);
     if (reply->get_file_caps_seq() > f->inode->caps[mds].seq) {   
@@ -2479,9 +2479,7 @@ int Client::open(const char *relpath, int flags, __int64_t uid, __int64_t gid)
     dout(0) << "open failure result " << result << endl;
   }
 
-  cout << "Before delete!!" << endl << endl;
   delete reply;
-  cout << "After delete!!" << endl << endl;
 
   put_user_ticket(tk);
   trim_cache();
index a454aa87175f35262c2c8b1133dbdaf24fbabb1c..10bed373128f7eb88e5e6056d91460ee8d6d3eaa 100644 (file)
@@ -153,7 +153,7 @@ class Inode {
   string    *symlink; // symlink content, if it's a symlink
 
   // secure caps
-  map<uid_t, ExtCap*> ext_cap_cache;
+  map<uid_t, ExtCap> ext_cap_cache;
 
   // for caching i/o mode
   FileCache fc;
@@ -196,10 +196,10 @@ class Inode {
     return (inode.mode & INODE_TYPE_MASK) == INODE_MODE_DIR;
   }
 
-  void set_ext_cap(uid_t user, ExtCap *ecap) { ext_cap_cache[user] = ecap; }
+  void set_ext_cap(uid_t user, ExtCap *ecap) { ext_cap_cache[user] = (*ecap); }
   ExtCap* get_ext_cap(uid_t user) {
     if (ext_cap_cache.count(user))
-      return ext_cap_cache[user]
+      return &(ext_cap_cache[user])
     return 0;
   }
 
index 49a82594689dc0d08793d6499fe7d8ddb65bb5f8..b182bb411bc92e2ab867cbabedba308954f76567 100644 (file)
@@ -203,7 +203,7 @@ ExtCap* Locker::issue_new_extcaps(CInode *in, int mode, MClientRequest *req) {
     // make new cap
     ext_cap = new ExtCap(my_want, my_user, in->ino());
 
-    cout << "Made new " << my_want << " capability for uid: "
+    dout(3) << "Made new " << my_want << " capability for uid: "
        << ext_cap->get_uid() << " for inode: " << ext_cap->get_ino()<< endl;
     
     ext_cap->sign_extcap(mds->getPrvKey());
@@ -215,7 +215,7 @@ ExtCap* Locker::issue_new_extcaps(CInode *in, int mode, MClientRequest *req) {
   // we want to index based on mode, so we can cache more caps
   // does the cached cap have the write mode?
   else {
-    cout << "Got cached " << my_want << " capability for uid: "
+    dout(3) << "Got cached " << my_want << " capability for uid: "
         << ext_cap->get_uid() << " for inode: " << ext_cap->get_ino() << endl;
     if (ext_cap->mode() < mode) {
       ext_cap->set_mode(mode);