]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rados: lock info keeps expiration, not duration
authorYehuda Sadeh <yehuda@inktank.com>
Fri, 20 Jul 2012 20:11:54 +0000 (13:11 -0700)
committerYehuda Sadeh <yehuda@inktank.com>
Fri, 20 Jul 2012 20:11:54 +0000 (13:11 -0700)
We pass duration in the request, but internally we keep
the expiration.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
src/cls/lock/cls_lock.cc
src/cls/lock/cls_lock_ops.cc
src/cls/lock/cls_lock_types.cc
src/cls/lock/cls_lock_types.h
src/rados.cc
src/test/rados-api/cls_lock.cc

index 43915a4663dc211fc44ec49719ec01f40b501004..80e74e70c9b709adcd0aea4d6e44725ecf477f4a 100644 (file)
@@ -105,7 +105,7 @@ static int read_lock(cls_method_context_t hctx, const string& name, lock_info_t
     ++next;
 
     struct cls_lock_locker_info_t& info = iter->second;
-    if (!info.duration.is_zero() && info.duration < now) {
+    if (!info.expiration.is_zero() && info.expiration < now) {
       CLS_LOG(20, "expiring locker");
       lock->lockers.erase(iter);
     }
@@ -137,7 +137,7 @@ static int write_lock(cls_method_context_t hctx, const string& name, const lock_
  * Input:
  * @param name Lock name
  * @param lock_type Type of lock (exclusive / shared)
- * @param duration Type of lock (exclusive / shared)
+ * @param duration Duration of lock (in seconds). Zero means it doesn't expire.
  * @param flags lock flags
  * @param cookie The cookie to set in the lock
  * @param tag The tag to match with the lock (can only lock with matching tags)
@@ -215,13 +215,13 @@ static int lock_obj(cls_method_context_t hctx,
 
   linfo.lock_type = lock_type;
   linfo.tag = tag;
-  utime_t duration_abs;
+  utime_t expiration;
   if (!duration.is_zero()) {
-    duration_abs = ceph_clock_now(g_ceph_context);
-    duration_abs += duration;
+    expiration = ceph_clock_now(g_ceph_context);
+    expiration += duration;
 
   }
-  struct cls_lock_locker_info_t info(duration_abs, inst.addr, description);
+  struct cls_lock_locker_info_t info(expiration, inst.addr, description);
 
   linfo.lockers[id] = info;
 
index fdbfc539f1d65c6b9e3145269d7e779eae105315..d8b9c5389a5287fba9b0da2210ca1b77dd11d5e0 100644 (file)
@@ -121,7 +121,7 @@ void cls_lock_get_info_reply::dump(Formatter *f) const
     f->dump_stream("locker") << id.locker;
     f->dump_string("description", info.description);
     f->dump_string("cookie", id.cookie);
-    f->dump_stream("duration") << info.duration;
+    f->dump_stream("expiration") << info.expiration;
     f->dump_stream("addr") << info.addr;
     f->close_section();
   }
index d8b47d7805d4d02e4d23267c2a64af45aa086eb2..d65ddc1784cf2de1d2825dc5dd21bcdfed00dd12 100644 (file)
@@ -42,7 +42,7 @@ void cls_lock_id_t::generate_test_instances(list<cls_lock_id_t*>& o)
 
 void cls_lock_locker_info_t::dump(Formatter *f) const
 {
-  f->dump_stream("duration") << duration;
+  f->dump_stream("expiration") << expiration;
   f->dump_stream("addr") << addr;
   f->dump_string("description", description);
 }
@@ -61,7 +61,7 @@ static void generate_test_addr(entity_addr_t& a, int nonce, int port)
 void cls_lock_locker_info_t::generate_test_instances(list<cls_lock_locker_info_t*>& o)
 {
   cls_lock_locker_info_t *i = new cls_lock_locker_info_t;
-  i->duration = utime_t(5, 0);
+  i->expiration = utime_t(5, 0);
   generate_test_addr(i->addr, 1, 2);
   i->description = "description";
   o.push_back(i);
index a92c757c5dc4d9c5e82a015db9ec907a9efbdc32..6361e917932d5f99a1e0f1cdac820d3545230e05 100644 (file)
@@ -61,24 +61,24 @@ WRITE_CLASS_ENCODER(cls_lock_id_t)
 
 struct cls_lock_locker_info_t
 {
-  utime_t duration;
+  utime_t expiration;
   entity_addr_t addr;
   string description;
 
   cls_lock_locker_info_t() {}
   cls_lock_locker_info_t(const utime_t& _e, const entity_addr_t& _a,
-                        const string& _d) :  duration(_e), addr(_a), description(_d) {}
+                        const string& _d) :  expiration(_e), addr(_a), description(_d) {}
 
   void encode(bufferlist &bl) const {
     ENCODE_START(1, 1, bl);
-    ::encode(duration, bl);
+    ::encode(expiration, bl);
     ::encode(addr, bl);
     ::encode(description, bl);
     ENCODE_FINISH(bl);
   }
   void decode(bufferlist::iterator &bl) {
     DECODE_START_LEGACY_COMPAT_LEN(1, 1, 1, bl);
-    ::decode(duration, bl);
+    ::decode(expiration, bl);
     ::decode(addr, bl);
     ::decode(description, bl);
     DECODE_FINISH(bl);
index 37e1a6e9c029fb4fb71be4f4bc55228a2d6eb14f..06ededefff867273432204fae96bb1a59c46c1e8 100644 (file)
@@ -769,7 +769,7 @@ static int do_lock_cmd(std::vector<const char*> &nargs,
       formatter->dump_stream("name") << id.locker;
       formatter->dump_string("cookie", id.cookie);
       formatter->dump_string("description", info.description);
-      formatter->dump_stream("duration") << info.duration;
+      formatter->dump_stream("expiration") << info.expiration;
       formatter->dump_stream("addr") << info.addr;
       formatter->close_section();
     }
index c54e98e357119156984679b216f3d9b1ec988931..48e11016c64a6328a1adf49ba1e15c2750ed8120 100644 (file)
@@ -50,7 +50,7 @@ void lock_info(IoCtx& ioctx, string& oid, string& name, map<cls_lock_id_t, cls_l
   map<cls_lock_id_t, cls_lock_locker_info_t>::iterator liter;
   for (liter = lockers.begin(); liter != lockers.end(); ++liter) {
     const cls_lock_id_t& locker = liter->first;
-    cout << "    " << locker.locker << " duration=" << liter->second.duration
+    cout << "    " << locker.locker << " expiration=" << liter->second.expiration
          << " addr=" << liter->second.addr << " cookie=" << locker.cookie << std::endl;
   }
 }