From 8e676ae5ea5f24b56f86a9f31d58ecb4cee49f05 Mon Sep 17 00:00:00 2001 From: Matan Breizman Date: Mon, 1 May 2023 13:29:29 +0000 Subject: [PATCH] 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) --- src/librbd/managed_lock/GetLockerRequest.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/librbd/managed_lock/GetLockerRequest.cc b/src/librbd/managed_lock/GetLockerRequest.cc index 6b2c27342bf..ea898ab96fd 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; -- 2.39.5