From: Sebastien Ponce Date: Thu, 22 Sep 2016 07:40:50 +0000 (+0200) Subject: radosstriper : Fixed locking of truncation in libradosstriper X-Git-Tag: v11.1.0~355^2~2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=db2f521956db60d134f0a31115eed3f1168801f2;p=ceph-ci.git 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 --- 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;