]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
objectcacher: dont count dirty pages as RDCACHE
authorSage Weil <sage@newdream.net>
Tue, 22 Apr 2008 22:57:14 +0000 (15:57 -0700)
committerSage Weil <sage@newdream.net>
Tue, 22 Apr 2008 22:57:14 +0000 (15:57 -0700)
src/client/FileCache.cc
src/osdc/ObjectCacher.cc

index 3ff496417b3eb883d493780a2877875b7d062d74..3f6a345f592d9c8aa9c9f727cc2f106af22f5e7b 100644 (file)
@@ -153,14 +153,14 @@ void FileCache::check_caps()
   while (p != caps_callbacks.end()) {
     if (used == 0 || (~(p->first) & used) == 0) {
       // implemented.
-      dout(10) << "used is " << cap_string(used) 
+      dout(10) << "check_caps used is " << cap_string(used) 
                << ", caps " << cap_string(p->first) << " implemented, doing callback(s)" << dendl;
       finish_contexts(p->second);
       map<int, list<Context*> >::iterator o = p;
       p++;
       caps_callbacks.erase(o);
     } else {
-      dout(10) << "used is " << cap_string(used) 
+      dout(10) << "check_caps used is " << cap_string(used) 
                << ", caps " << cap_string(p->first) << " not yet implemented" << dendl;
       p++;
     }
index bd553aa1006b41aea423e8991ca4666f622993a2..2b6e67dfc9a396ee67145ec5b8e69d42d7571e41 100644 (file)
@@ -1259,7 +1259,13 @@ bool ObjectCacher::set_is_cached(inodeno_t ino)
        i != s.end();
        i++) {
     Object *ob = *i;
-    if (!ob->data.empty()) return true;
+    for (map<off_t,BufferHead*>::iterator p = ob->data.begin();
+         p != ob->data.end();
+         p++) {
+      BufferHead *bh = p->second;
+      if (!bh->is_dirty() && !bh->is_tx()) 
+        return true;
+    }
   }
 
   return false;
@@ -1275,7 +1281,7 @@ bool ObjectCacher::set_is_dirty_or_committing(inodeno_t ino)
        i != s.end();
        i++) {
     Object *ob = *i;
-
+    
     for (map<off_t,BufferHead*>::iterator p = ob->data.begin();
          p != ob->data.end();
          p++) {
@@ -1284,7 +1290,7 @@ bool ObjectCacher::set_is_dirty_or_committing(inodeno_t ino)
         return true;
     }
   }  
-
+  
   return false;
 }