From a6ffcc8dfb32807e79906e12a3caf58b6ae65a5d Mon Sep 17 00:00:00 2001 From: Colin Patrick McCabe Date: Fri, 1 Jul 2011 00:18:42 -0700 Subject: [PATCH] librados: close very small race condition Signed-off-by: Colin McCabe --- src/include/atomic.h | 4 ++-- src/librados.cc | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/include/atomic.h b/src/include/atomic.h index 2dc66cc64dc71..54d5b983f84cf 100644 --- a/src/include/atomic.h +++ b/src/include/atomic.h @@ -29,8 +29,8 @@ namespace ceph { AO_t val; public: atomic_t(AO_t i=0) : val(i) {} - void inc() { - AO_fetch_and_add1(&val); + AO_t inc() { + return AO_fetch_and_add1(&val) + 1; } AO_t dec() { return AO_fetch_and_sub1_write(&val) - 1; diff --git a/src/librados.cc b/src/librados.cc index 54af457e1a1c7..40d5df09eac6d 100644 --- a/src/librados.cc +++ b/src/librados.cc @@ -850,8 +850,7 @@ connect() messenger->add_dispatcher_head(this); - rados_instance.inc(); - nonce = getpid() + (1000000 * (uint64_t)rados_instance.read()); + nonce = getpid() + (1000000 * (uint64_t)rados_instance.inc()); messenger->start_with_nonce(nonce); messenger->add_dispatcher_head(this); -- 2.39.5