From: Matan Breizman Date: Mon, 1 May 2023 13:29:29 +0000 (+0000) Subject: librbd/managed_lock/GetLockerRequest: Fix no valid lockers case X-Git-Tag: v17.2.7~239^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e5e6b9cd208472317b8673a5fdaee4d0ec7cb11b;p=ceph.git librbd/managed_lock/GetLockerRequest: Fix no valid lockers case See: `m_locker->address = iter->second.addr.get_legacy_str();` In the case where `iter->second.addr` is an empty address, m_locker->address string is assigned with "0)/0" and therfore will never result in an empty string. Use `is_blank_ip()` before `get_legacy_str()` Signed-off-by: Matan Breizman (cherry picked from commit 7482beeea9b1bc8c3cbdac425e7afb8ebdc9f270) --- diff --git a/src/librbd/managed_lock/GetLockerRequest.cc b/src/librbd/managed_lock/GetLockerRequest.cc index 6b2c27342bff..ea898ab96fde 100644 --- a/src/librbd/managed_lock/GetLockerRequest.cc +++ b/src/librbd/managed_lock/GetLockerRequest.cc @@ -103,14 +103,14 @@ void GetLockerRequest::handle_get_lockers(int r) { return; } + if (iter->second.addr.is_blank_ip()) { + ldout(m_cct, 5) << "locker has a blank address" << dendl; + finish(-EBUSY); + return; + } m_locker->entity = iter->first.locker; m_locker->cookie = iter->first.cookie; m_locker->address = iter->second.addr.get_legacy_str(); - if (m_locker->cookie.empty() || m_locker->address.empty()) { - ldout(m_cct, 20) << "no valid lockers detected" << dendl; - finish(-ENOENT); - return; - } ldout(m_cct, 10) << "retrieved exclusive locker: " << m_locker->entity << "@" << m_locker->address << dendl;