diff options
Diffstat (limited to 'src/rgw/rgw_rados.cc')
-rw-r--r-- | src/rgw/rgw_rados.cc | 8 |
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); |