summaryrefslogtreecommitdiff
path: root/src/rgw/rgw_rados.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/rgw/rgw_rados.cc')
-rw-r--r--src/rgw/rgw_rados.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc
index 9a485600b6d..055e7ad0283 100644
--- a/src/rgw/rgw_rados.cc
+++ b/src/rgw/rgw_rados.cc
@@ -1481,7 +1481,8 @@ int RGWRados::time_log_trim(const string& oid, utime_t& start_time, utime_t& end
}
-int RGWRados::lock_exclusive(rgw_bucket& pool, const string& oid, utime_t& duration, string& owner_id) {
+int RGWRados::lock_exclusive(rgw_bucket& pool, const string& oid, utime_t& duration,
+ string& zone_id, string& owner_id) {
librados::IoCtx io_ctx;
const char *pool_name = pool.name.c_str();
@@ -1493,11 +1494,13 @@ int RGWRados::lock_exclusive(rgw_bucket& pool, const string& oid, utime_t& durat
rados::cls::lock::Lock l(log_lock_name);
l.set_duration(duration);
l.set_cookie(owner_id);
+ l.set_tag(zone_id);
+ l.set_renew(true);
return l.lock_exclusive(&io_ctx, oid);
}
-int RGWRados::unlock(rgw_bucket& pool, const string& oid, string& owner_id) {
+int RGWRados::unlock(rgw_bucket& pool, const string& oid, string& zone_id, string& owner_id) {
librados::IoCtx io_ctx;
const char *pool_name = pool.name.c_str();
@@ -1507,6 +1510,7 @@ int RGWRados::unlock(rgw_bucket& pool, const string& oid, string& owner_id) {
return r;
rados::cls::lock::Lock l(log_lock_name);
+ l.set_tag(zone_id);
l.set_cookie(owner_id);
return l.unlock(&io_ctx, oid);