From 628fc52137fc14377eba46c66b57d8d094e88507 Mon Sep 17 00:00:00 2001 From: Olaf Faaland Date: Tue, 13 Oct 2015 23:08:44 -0700 Subject: [PATCH] Fix lockdep warning in spl_inode_{lock,unlock} spl_inode_{lock,unlock} are triggering possible recursive locking warnings from lockdep. The warning is a false positive. The lock is used to protect a parent directory during delete/add operations, used in zfs when writing/removing the cache file. The inode lock is taken on both the parent inode and the file inode. VFS provides an enum to subclass the lock. This patch changes the spin_lock call to _nested version and uses the provided enum. Signed-off-by: Olaf Faaland Signed-off-by: Brian Behlendorf Issue #480 --- include/linux/file_compat.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/file_compat.h b/include/linux/file_compat.h index a2db259..c58bb81 100644 --- a/include/linux/file_compat.h +++ b/include/linux/file_compat.h @@ -76,7 +76,7 @@ spl_filp_fallocate(struct file *fp, int mode, loff_t offset, loff_t len) #define spl_filp_fsync(fp, sync) vfs_fsync(fp, (fp)->f_dentry, sync) #endif /* HAVE_2ARGS_VFS_FSYNC */ -#define spl_inode_lock(ip) mutex_lock(&(ip)->i_mutex) +#define spl_inode_lock(ip) mutex_lock_nested(&(ip)->i_mutex, I_MUTEX_PARENT) #define spl_inode_unlock(ip) mutex_unlock(&(ip)->i_mutex) #endif /* SPL_FILE_COMPAT_H */ -- 2.39.2