On 09/24/2018 01:39 PM, Sage Weil wrote:
On Mon, 24 Sep 2018, Patrick Donnelly wrote:
- The only code that has been converted to ceph::mutex so far is Finisher.
You can see what that transition looks like here:
https://github.com/ceph/ceph/pull/24133/commits/8535965ba4298537c489897ccb191a0f458d60d7
- lock("Foo::lock") -> lock(ceph::make_mutex("Foo::lock")) in ctor
It's odd seeing what looks like a move/copy constructed mutex. If I'm
understanding the `make_mutex` code correctly, this just selectively
discards the arguments to the lock ctor if not debug mode?
Right. I'm fuzzy on the underlying mechanics of the factory function, but
it seems to work!
sage
While this looks like it's trying to use mutex's deleted move
constructor, the factory function relies on return value optimization
(now guaranteed in c++17) in order to construct the mutex in place.