]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
radosstriper : Fixed locking of truncation in libradosstriper
authorSebastien Ponce <sebastien.ponce@cern.ch>
Thu, 22 Sep 2016 07:40:50 +0000 (09:40 +0200)
committerroot <root@lxbre43a05.cern.ch>
Tue, 1 Nov 2016 15:37:12 +0000 (16:37 +0100)
Last commit did drop the check for existence of the object. It's now back there

Signed-off-by: Sebastien Ponce <sebastien.ponce@cern.ch>
src/libradosstriper/RadosStriperImpl.cc

index 7e9715ce60754791b313804059b48c3046b28678..2816f57c090aa3a21a856551af02ff4154aa73a3 100644 (file)
@@ -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;