]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osdc: Make ObjectCahce can hanle write with DONTNEED.
authorJianpeng Ma <jianpeng.ma@intel.com>
Fri, 30 Jan 2015 03:36:50 +0000 (11:36 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Fri, 30 Jan 2015 03:36:50 +0000 (11:36 +0800)
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/osdc/ObjectCacher.cc

index a26639f9c86447cab8ce994b2d3d0b70b7b135ec..95a4bda13e29dd3af85360b7cd791789dd798a16 100644 (file)
@@ -1307,6 +1307,7 @@ int ObjectCacher::writex(OSDWrite *wr, ObjectSet *oset, Mutex& wait_on_lock,
   utime_t now = ceph_clock_now(cct);
   uint64_t bytes_written = 0;
   uint64_t bytes_written_in_flush = 0;
+  bool dontneed = wr->fadvise_flags & LIBRADOS_OP_FLAG_FADVISE_DONTNEED;
   
   for (vector<ObjectExtent>::iterator ex_it = wr->extents.begin();
        ex_it != wr->extents.end();
@@ -1354,7 +1355,11 @@ int ObjectCacher::writex(OSDWrite *wr, ObjectSet *oset, Mutex& wait_on_lock,
 
     // ok, now bh is dirty.
     mark_dirty(bh);
-    touch_bh(bh);
+    if (dontneed)
+      bh->set_dontneed(true);
+    else
+      touch_bh(bh);
+
     bh->last_write = now;
 
     o->try_merge_bh(bh);