From: Alex Elder Date: Fri, 13 Jan 2012 01:48:10 +0000 (-0800) Subject: ceph: create a new session lock to avoid lock inversion X-Git-Tag: v3.3-rc3~30^2~2 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d8fb02abdc39f92a1066313e2b17047876afa8f9;p=pandora-kernel.git ceph: create a new session lock to avoid lock inversion Lockdep was reporting a possible circular lock dependency in dentry_lease_is_valid(). That function needs to sample the session's s_cap_gen and and s_cap_ttl fields coherently, but needs to do so while holding a dentry lock. The s_cap_lock field was being used to protect the two fields, but that can't be taken while holding a lock on a dentry within the session. In most cases, the s_cap_gen and s_cap_ttl fields only get operated on separately. But in three cases they need to be updated together. Implement a new lock to protect the spots updating both fields atomically is required. Signed-off-by: Alex Elder Reviewed-by: Sage Weil --- Reading git-diff-tree failed