ocfs2: Add lockdep annotations
Add lockdep support to OCFS2. The support also covers all of the cluster locks except for open locks, journal locks, and local quotafile locks. These are special because they are acquired for a node, not for a particular process and lockdep cannot deal with such type of locking. Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Joel Becker <joel.becker@oracle.com>
This commit is contained in:
@@ -50,6 +50,8 @@ static inline int is_in_system_inode_array(struct ocfs2_super *osb,
|
||||
int type,
|
||||
u32 slot);
|
||||
|
||||
static struct lock_class_key ocfs2_sysfile_cluster_lock_key[NUM_SYSTEM_INODES];
|
||||
|
||||
static inline int is_global_system_inode(int type)
|
||||
{
|
||||
return type >= OCFS2_FIRST_ONLINE_SYSTEM_INODE &&
|
||||
@@ -118,6 +120,21 @@ static struct inode * _ocfs2_get_system_file_inode(struct ocfs2_super *osb,
|
||||
inode = NULL;
|
||||
goto bail;
|
||||
}
|
||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||
if (type == LOCAL_USER_QUOTA_SYSTEM_INODE ||
|
||||
type == LOCAL_GROUP_QUOTA_SYSTEM_INODE ||
|
||||
type == JOURNAL_SYSTEM_INODE) {
|
||||
/* Ignore inode lock on these inodes as the lock does not
|
||||
* really belong to any process and lockdep cannot handle
|
||||
* that */
|
||||
OCFS2_I(inode)->ip_inode_lockres.l_lockdep_map.key = NULL;
|
||||
} else {
|
||||
lockdep_init_map(&OCFS2_I(inode)->ip_inode_lockres.
|
||||
l_lockdep_map,
|
||||
ocfs2_system_inodes[type].si_name,
|
||||
&ocfs2_sysfile_cluster_lock_key[type], 0);
|
||||
}
|
||||
#endif
|
||||
bail:
|
||||
|
||||
return inode;
|
||||
|
Reference in New Issue
Block a user