]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
mds: prevent new lock cache cons when invalidating an existing one
authorPatrick Donnelly <pdonnell@redhat.com>
Tue, 5 Mar 2024 17:27:00 +0000 (12:27 -0500)
committerPatrick Donnelly <pdonnell@redhat.com>
Wed, 20 Mar 2024 14:56:57 +0000 (10:56 -0400)
commit9b4a93f2b7b902e56a41f7e50fd21b8046134ef6
treeca094ebc85d1557a270ab579268e2fe5e5751047
parentf813b8c511a50a7fab673c2b99587f00fb506323
mds: prevent new lock cache cons when invalidating an existing one

The previous scheme invalidated a lock cache and then immediately removed it
from its Capability list. The lock cache would eventually be deleted but a new
one could be constructed shortly after. The main reason for this is that simply
invalidating the lock cache does not drive a state change in the local locks
preventing new writers. This is mostly important for acquiring the quiescelock.

This commit also corrects a bug where a MDLockCache would be created for a
given opcode type (like create) when the capability does not have the issued
cap (CEPH_CAP_DIR_CREATE). The bug would not cause any negative side-effects
but would hold locks unnecessarily when only MDS ops (and not the client
executing ops asynchronously) are acquiring the locks.

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
src/mds/Locker.cc
src/mds/Mutation.cc
src/mds/Mutation.h