]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
objectcacher: rename truncate_set -> discard_set, and use discard
authorSage Weil <sage@newdream.net>
Thu, 19 Apr 2012 23:17:48 +0000 (16:17 -0700)
committerSage Weil <sage@newdream.net>
Fri, 20 Apr 2012 23:51:01 +0000 (16:51 -0700)
Do not assume the object extents are at the trailing edge of objects.
Instead, discard arbitrary extents.  Fix callers.

Signed-off-by: Sage Weil <sage@newdream.net>
src/client/Client.cc
src/librbd.cc
src/osdc/ObjectCacher.cc
src/osdc/ObjectCacher.h

index 986646f83218aab9c5cec7f9ca566ade3bfd50d3..47323bdc8ab7ed0e30f455e1b3a0cb7a7d188ba7 100644 (file)
@@ -2319,7 +2319,7 @@ void Client::_invalidate_inode_cache(Inode *in, int64_t off, int64_t len)
   if (cct->_conf->client_oc) {
     vector<ObjectExtent> ls;
     Filer::file_to_extents(cct, in->ino, &in->layout, off, len, ls);
-    objectcacher->truncate_set(&in->oset, ls);
+    objectcacher->discard_set(&in->oset, ls);
   }
   
   if (ino_invalidate_cb)
index 2d7c91339e65d8fede8d33c4501b29cb9444b693..c9bfb5efff5a9d7cbb6b799586386c17b99ca0d4 100644 (file)
@@ -1569,7 +1569,7 @@ int discard(ImageCtx *ictx, uint64_t off, uint64_t len)
   }
 
   if (ictx->object_cacher)
-    ictx->object_cacher->truncate_set(ictx->object_set, v);
+    ictx->object_cacher->discard_set(ictx->object_set, v);
 
   return total_write;
 }
@@ -1852,7 +1852,7 @@ int aio_discard(ImageCtx *ictx, uint64_t off, size_t len, AioCompletion *c)
   r = 0;
 done:
   if (ictx->object_cacher)
-    ictx->object_cacher->truncate_set(ictx->object_set, v);
+    ictx->object_cacher->discard_set(ictx->object_set, v);
 
   c->finish_adding_completions();
   c->put();
index 25931dd8334020adafbfef1c0acf4c5dc85fd29a..208002ad16b7d45aed5307e95357a058c222ccca 100644 (file)
@@ -1646,16 +1646,16 @@ uint64_t ObjectCacher::release_all()
 
 
 /**
- * Truncate an ObjectSet by removing the objects in exls from the in-memory oset.
+ * discard object extents from an ObjectSet by removing the objects in exls from the in-memory oset.
  */
-void ObjectCacher::truncate_set(ObjectSet *oset, vector<ObjectExtent>& exls)
+void ObjectCacher::discard_set(ObjectSet *oset, vector<ObjectExtent>& exls)
 {
   if (oset->objects.empty()) {
-    ldout(cct, 10) << "truncate_set on " << oset << " dne" << dendl;
+    ldout(cct, 10) << "discard_set on " << oset << " dne" << dendl;
     return;
   }
   
-  ldout(cct, 10) << "truncate_set " << oset << dendl;
+  ldout(cct, 10) << "discard_set " << oset << dendl;
 
   bool were_dirty = oset->dirty_or_tx > 0;
 
@@ -1668,19 +1668,11 @@ void ObjectCacher::truncate_set(ObjectSet *oset, vector<ObjectExtent>& exls)
       continue;
     Object *ob = objects[oset->poolid][soid];
     
-    // purge or truncate?
-    if (ex.offset == 0) {
-      ldout(cct, 10) << "truncate_set purging " << *ob << dendl;
-      purge(ob);
-    } else {
-      // hrm, truncate object
-      ldout(cct, 10) << "truncate_set truncating " << *ob << " at " << ex.offset << dendl;
-      ob->truncate(ex.offset);
-      
-      if (ob->can_close()) {
-       ldout(cct, 10) << "truncate_set trimming " << *ob << dendl;
-       close_object(ob);
-      }
+    ob->discard(ex.offset, ex.length);
+
+    if (ob->can_close()) {
+      ldout(cct, 10) << " closing " << *ob << dendl;
+      close_object(ob);
     }
   }
 
index 800a8b7eecc782352b417ebaa5fccb7244e16472..8f308af6fbe2d1e92e74982fda60d417129bca2c 100644 (file)
@@ -487,7 +487,7 @@ class ObjectCacher {
   loff_t release_set(ObjectSet *oset);  // returns # of bytes not released (ie non-clean)
   uint64_t release_all();
 
-  void truncate_set(ObjectSet *oset, vector<ObjectExtent>& ex);
+  void discard_set(ObjectSet *oset, vector<ObjectExtent>& ex);
 
   // file functions