diff options
author | Sage Weil <sage@newdream.net> | 2010-03-16 13:39:28 -0700 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-03-23 07:46:53 -0700 |
commit | cdc2ce056a3620139056b60ad7f6d355ad13f445 (patch) | |
tree | 1aed7f66612d13beeeec6e2c191f19eff44d1054 /lib | |
parent | 4ea0043a29c82ca52ca54728d837314563bec574 (diff) | |
download | kernel_samsung_crespo-cdc2ce056a3620139056b60ad7f6d355ad13f445.zip kernel_samsung_crespo-cdc2ce056a3620139056b60ad7f6d355ad13f445.tar.gz kernel_samsung_crespo-cdc2ce056a3620139056b60ad7f6d355ad13f445.tar.bz2 |
ceph: fix session locking in handle_caps, ceph_check_caps
Passing a session pointer to ceph_check_caps() used to mean it would leave
the session mutex locked. That wasn't always possible if it wasn't passed
CHECK_CAPS_AUTHONLY. If could unlock the passed session and lock a
differet session mutex, which was clearly wrong, and also emitted a
warning when it a racing CPU retook it and we did an unlock from the wrong
context.
This was only a problem when there was more than one MDS.
First, make ceph_check_caps unconditionally drop the session mutex, so that
it is free to lock other sessions as needed. Then adjust the one caller
that passes in a session (handle_cap_grant) accordingly.
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions