From db2f521956db60d134f0a31115eed3f1168801f2 Mon Sep 17 00:00:00 2001 From: Sebastien Ponce Date: Thu, 22 Sep 2016 09:40:50 +0200 Subject: [PATCH] radosstriper : Fixed locking of truncation in libradosstriper Last commit did drop the check for existence of the object. It's now back there Signed-off-by: Sebastien Ponce --- src/libradosstriper/RadosStriperImpl.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libradosstriper/RadosStriperImpl.cc b/src/libradosstriper/RadosStriperImpl.cc index 7e9715ce607..2816f57c090 100644 --- a/src/libradosstriper/RadosStriperImpl.cc +++ b/src/libradosstriper/RadosStriperImpl.cc @@ -902,8 +902,12 @@ int libradosstriper::RadosStriperImpl::trunc(const std::string& soid, uint64_t s { // lock the object in exclusive mode std::string firstObjOid = getObjectId(soid, 0); + librados::ObjectWriteOperation op; + op.assert_exists(); std::string lockCookie = RadosStriperImpl::getUUID(); - int rc = m_ioCtx.lock_exclusive(firstObjOid, RADOS_LOCK_NAME, lockCookie, "", 0, 0); + utime_t dur = utime_t(); + rados::cls::lock::lock(&op, RADOS_LOCK_NAME, LOCK_EXCLUSIVE, lockCookie, "", "", dur, 0); + int rc = m_ioCtx.operate(firstObjOid, &op); if (rc) return rc; // load layout and size ceph_file_layout layout; -- 2.39.5