]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
librbd/managed_lock/GetLockerRequest: Fix no valid lockers case
authorMatan Breizman <mbreizma@redhat.com>
Mon, 1 May 2023 13:29:29 +0000 (13:29 +0000)
committerIlya Dryomov <idryomov@gmail.com>
Tue, 16 May 2023 20:18:49 +0000 (22:18 +0200)
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 <mbreizma@redhat.com>
(cherry picked from commit 7482beeea9b1bc8c3cbdac425e7afb8ebdc9f270)

src/librbd/managed_lock/GetLockerRequest.cc

index 6b2c27342bff1a912639ee9ca0cae8db1bf21e61..ea898ab96fdecd75d50326f2cf5282ce3cb2187a 100644 (file)
@@ -103,14 +103,14 @@ void GetLockerRequest<I>::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;