]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commit
reef: mds: use SimpleLock::WAIT_ALL for wait mask reef-release
authorPatrick Donnelly <pdonnell@ibm.com>
Tue, 24 Feb 2026 19:30:24 +0000 (14:30 -0500)
committerYuri Weinstein <yweinste@redhat.com>
Tue, 24 Feb 2026 20:13:07 +0000 (20:13 +0000)
commit0ef62ce8e48de042e1e5e6a70cfa2ee3f1174d28
treeec7d93526f191a3873d54681c8f68e3d0138eff4
parentb57d1d325914bb542eeaf580bbf1572fbf73cb3d
reef: mds: use SimpleLock::WAIT_ALL for wait mask

The Locker uses has_any_waiter for a particular lock to evaluate whether
to nudge the log. For the squid, tentacle, and main branches, this
larger bit mask (all 64 bits) will cause this to wrongly return true for
other locks which have waiters. The side-effect of waking requests
spuriously is undesirable but should not affect performance
significantly.

For reef and older releases, using std::numeric_limits<uint64_t>::max()
in has_any_waiter() causes a bitwise overflow that sets the wait-queue
search bound impossibly high, resulting in the method always incorrectly
returning false. This results in nudge_log never nudging the log!

Note: for reef the fix is different because of the interface refactor.
For that reason, this fix is applied directly to reef.

Fixes: db5c9dc2e6cc95a8d112c2131e4cac5340ca9dd0
Fixes: https://tracker.ceph.com/issues/75141
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
(cherry picked from commit 6580d4e58326ec7ce89f6b813904a04d266e910c)
src/mds/SimpleLock.h