]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osdc: Don't pass mutex into ObjectCacher::_wait_for_write.
authorJianpeng Ma <jianpeng.ma@intel.com>
Thu, 5 Feb 2015 02:13:06 +0000 (10:13 +0800)
committerLoic Dachary <ldachary@redhat.com>
Sun, 6 Sep 2015 12:07:54 +0000 (14:07 +0200)
Because the mutex is the same as ObjectCacher::lock.

Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
(cherry picked from commit d7cf7aeea5cba1ffa8e51ff1ad2424b1ec161a12)

src/client/Client.cc
src/librbd/ImageCtx.cc
src/osdc/ObjectCacher.cc
src/osdc/ObjectCacher.h
src/test/osdc/object_cacher_stress.cc

index 446f0d12608896739e68b4f9c0d295e5b07249e7..ab42545a614b4bdc10a2a106e2b4454e938fb2d6 100644 (file)
@@ -7365,9 +7365,7 @@ int Client::_write(Fh *f, int64_t offset, uint64_t size, const char *buf)
 
     // async, caching, non-blocking.
     r = objectcacher->file_write(&in->oset, &in->layout, in->snaprealm->get_snap_context(),
-                                offset, size, bl, ceph_clock_now(cct), 0,
-                                client_lock);
-
+                                offset, size, bl, ceph_clock_now(cct), 0);
     put_cap_ref(in, CEPH_CAP_FILE_BUFFER);
 
     if (r < 0)
index 5a88adb10348d581651636f73de564fd39540aac..8f3c8fbd89a6ff9eaf8926b2d04f2cafa9e5366f 100644 (file)
@@ -632,7 +632,7 @@ public:
     wr->extents.push_back(extent);
     {
       Mutex::Locker l(cache_lock);
-      object_cacher->writex(wr, object_set, cache_lock, onfinish);
+      object_cacher->writex(wr, object_set, onfinish);
     }
   }
 
index 995b37bdc6225d43ee2a1f8c82c437de6d700ef3..705814892e6a173d3a6daf31be503d4f90118e23 100644 (file)
@@ -1354,8 +1354,7 @@ void ObjectCacher::retry_waiting_reads()
   waitfor_read.splice(waitfor_read.end(), ls);
 }
 
-int ObjectCacher::writex(OSDWrite *wr, ObjectSet *oset, Mutex& wait_on_lock,
-                        Context *onfreespace)
+int ObjectCacher::writex(OSDWrite *wr, ObjectSet *oset, Context *onfreespace)
 {
   assert(lock.is_locked());
   utime_t now = ceph_clock_now(cct);
@@ -1428,7 +1427,7 @@ int ObjectCacher::writex(OSDWrite *wr, ObjectSet *oset, Mutex& wait_on_lock,
     }
   }
 
-  int r = _wait_for_write(wr, bytes_written, oset, wait_on_lock, onfreespace);
+  int r = _wait_for_write(wr, bytes_written, oset, onfreespace);
   delete wr;
 
   //verify_stats();
@@ -1476,7 +1475,7 @@ void ObjectCacher::maybe_wait_for_writeback(uint64_t len)
 }
 
 // blocking wait for write.
-int ObjectCacher::_wait_for_write(OSDWrite *wr, uint64_t len, ObjectSet *oset, Mutex& lock, Context *onfreespace)
+int ObjectCacher::_wait_for_write(OSDWrite *wr, uint64_t len, ObjectSet *oset, Context *onfreespace)
 {
   assert(lock.is_locked());
   int ret = 0;
index ca23549ceac953227f215678490da4111673f21e..0bef597fdf65b88b252a7c4c761006aeeb70a155 100644 (file)
@@ -602,14 +602,12 @@ class ObjectCacher {
    * the return value is total bytes read
    */
   int readx(OSDRead *rd, ObjectSet *oset, Context *onfinish);
-  int writex(OSDWrite *wr, ObjectSet *oset, Mutex& wait_on_lock,
-            Context *onfreespace);
+  int writex(OSDWrite *wr, ObjectSet *oset, Context *onfreespace);
   bool is_cached(ObjectSet *oset, vector<ObjectExtent>& extents, snapid_t snapid);
 
 private:
   // write blocking
-  int _wait_for_write(OSDWrite *wr, uint64_t len, ObjectSet *oset, Mutex& lock,
-                     Context *onfreespace);
+  int _wait_for_write(OSDWrite *wr, uint64_t len, ObjectSet *oset, Context *onfreespace);
   void maybe_wait_for_writeback(uint64_t len);
   bool _flush_set_finish(C_GatherBuilder *gather, Context *onfinish);
 
@@ -678,11 +676,10 @@ public:
 
   int file_write(ObjectSet *oset, ceph_file_layout *layout, const SnapContext& snapc,
                  loff_t offset, uint64_t len, 
-                 bufferlist& bl, utime_t mtime, int flags,
-                Mutex& wait_on_lock) {
+                 bufferlist& bl, utime_t mtime, int flags) {
     OSDWrite *wr = prepare_write(snapc, bl, mtime, flags);
     Striper::file_to_extents(cct, oset->ino, layout, offset, len, oset->truncate_size, wr->extents);
-    return writex(wr, oset, wait_on_lock, NULL);
+    return writex(wr, oset, NULL);
   }
 
   bool file_flush(ObjectSet *oset, ceph_file_layout *layout, const SnapContext& snapc,
index 4f6fffe05c998a447a6dc347bce09e6cafbe42b7..ec5f926082743726c1d65a7b529d264d476404fd 100644 (file)
@@ -112,7 +112,7 @@ int stress_test(uint64_t num_ops, uint64_t num_objs,
       ObjectCacher::OSDWrite *wr = obc.prepare_write(snapc, bl, utime_t(), 0);
       wr->extents.push_back(op->extent);
       lock.Lock();
-      obc.writex(wr, &object_set, lock, NULL);
+      obc.writex(wr, &object_set, NULL);
       lock.Unlock();
     }
   }