linux-stable/fs/ceph
Alex Elder d8fb02abdc 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 <elder@dreamhost.com>
Reviewed-by: Sage Weil <sage@newdream.net>
2012-02-02 12:49:19 -08:00
..
addr.c ceph: use i_ceph_lock instead of i_lock 2011-12-07 10:46:44 -08:00
caps.c ceph: create a new session lock to avoid lock inversion 2012-02-02 12:49:19 -08:00
ceph_frag.c ceph: factor out libceph from Ceph file system 2010-10-20 15:37:28 -07:00
debugfs.c ceph: explicitly reference rename old_dentry parent dir in request 2011-07-26 11:31:14 -07:00
dir.c ceph: create a new session lock to avoid lock inversion 2012-02-02 12:49:19 -08:00
export.c ceph: avoid d_parent in ceph_dentry_hash; fix ceph_encode_fh() hashing bug 2011-07-26 11:30:55 -07:00
file.c ceph: fix SEEK_CUR, SEEK_SET regression 2011-12-13 09:19:26 -08:00
inode.c ceph: use i_ceph_lock instead of i_lock 2011-12-07 10:46:44 -08:00
ioctl.c ceph: use i_ceph_lock instead of i_lock 2011-12-07 10:46:44 -08:00
ioctl.h ceph: document ioctls 2011-10-25 16:10:15 -07:00
Kconfig ceph: factor out libceph from Ceph file system 2010-10-20 15:37:28 -07:00
locks.c ceph: unwind canceled flock state 2011-06-07 21:36:45 -07:00
Makefile ceph: Makefile: Remove unnessary code 2011-01-12 15:15:13 -08:00
mds_client.c ceph: create a new session lock to avoid lock inversion 2012-02-02 12:49:19 -08:00
mds_client.h ceph: create a new session lock to avoid lock inversion 2012-02-02 12:49:19 -08:00
mdsmap.c ceph: factor out libceph from Ceph file system 2010-10-20 15:37:28 -07:00
snap.c ceph: use i_ceph_lock instead of i_lock 2011-12-07 10:46:44 -08:00
strings.c ceph: factor out libceph from Ceph file system 2010-10-20 15:37:28 -07:00
super.c ceph: fix rasize reporting by ceph_show_options 2011-12-02 09:27:54 -08:00
super.h ceph: use i_ceph_lock instead of i_lock 2011-12-07 10:46:44 -08:00
xattr.c ceph: change "ceph.layout" xattr to be "ceph.file.layout" 2012-02-02 12:48:52 -08:00