From: Yehuda Sadeh Date: Fri, 20 Jul 2012 20:11:54 +0000 (-0700) Subject: rados: lock info keeps expiration, not duration X-Git-Tag: v0.51~76^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2c7d782177fffe54f530ea592b54cff398c83ea3;p=ceph.git rados: lock info keeps expiration, not duration We pass duration in the request, but internally we keep the expiration. Signed-off-by: Yehuda Sadeh --- diff --git a/src/cls/lock/cls_lock.cc b/src/cls/lock/cls_lock.cc index 43915a4663dc..80e74e70c9b7 100644 --- a/src/cls/lock/cls_lock.cc +++ b/src/cls/lock/cls_lock.cc @@ -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; diff --git a/src/cls/lock/cls_lock_ops.cc b/src/cls/lock/cls_lock_ops.cc index fdbfc539f1d6..d8b9c5389a52 100644 --- a/src/cls/lock/cls_lock_ops.cc +++ b/src/cls/lock/cls_lock_ops.cc @@ -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(); } diff --git a/src/cls/lock/cls_lock_types.cc b/src/cls/lock/cls_lock_types.cc index d8b47d7805d4..d65ddc1784cf 100644 --- a/src/cls/lock/cls_lock_types.cc +++ b/src/cls/lock/cls_lock_types.cc @@ -42,7 +42,7 @@ void cls_lock_id_t::generate_test_instances(list& 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& 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); diff --git a/src/cls/lock/cls_lock_types.h b/src/cls/lock/cls_lock_types.h index a92c757c5dc4..6361e917932d 100644 --- a/src/cls/lock/cls_lock_types.h +++ b/src/cls/lock/cls_lock_types.h @@ -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); diff --git a/src/rados.cc b/src/rados.cc index 37e1a6e9c029..06ededefff86 100644 --- a/src/rados.cc +++ b/src/rados.cc @@ -769,7 +769,7 @@ static int do_lock_cmd(std::vector &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(); } diff --git a/src/test/rados-api/cls_lock.cc b/src/test/rados-api/cls_lock.cc index c54e98e35711..48e11016c64a 100644 --- a/src/test/rados-api/cls_lock.cc +++ b/src/test/rados-api/cls_lock.cc @@ -50,7 +50,7 @@ void lock_info(IoCtx& ioctx, string& oid, string& name, map::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; } }