diff options
author | Jeff Layton <jeff.layton@primarydata.com> | 2016-01-07 15:08:51 -0500 |
---|---|---|
committer | Jeff Layton <jeff.layton@primarydata.com> | 2016-01-08 11:38:19 -0500 |
commit | f27a0fe083bf46fef0d7045aa2e9a7e56e72d8d8 (patch) | |
tree | 57f4d3ceb4b1f6ef1f5121a1583a129ebb8846b4 | |
parent | 1890910fd06fefbfa1cbeaf88357783914af71f6 (diff) | |
download | blackbird-op-linux-f27a0fe083bf46fef0d7045aa2e9a7e56e72d8d8.tar.gz blackbird-op-linux-f27a0fe083bf46fef0d7045aa2e9a7e56e72d8d8.zip |
locks: pass inode pointer to locks_free_lock_context
...so we can print information about it if there are leaked locks.
Signed-off-by: Jeff Layton <jeff.layton@primarydata.com>
Acked-by: "J. Bruce Fields" <bfields@fieldses.org>
-rw-r--r-- | fs/inode.c | 2 | ||||
-rw-r--r-- | fs/locks.c | 4 | ||||
-rw-r--r-- | include/linux/fs.h | 4 |
3 files changed, 6 insertions, 4 deletions
diff --git a/fs/inode.c b/fs/inode.c index 1be5f9003eb3..ab6c84159f9d 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -225,7 +225,7 @@ void __destroy_inode(struct inode *inode) inode_detach_wb(inode); security_inode_free(inode); fsnotify_inode_delete(inode); - locks_free_lock_context(inode->i_flctx); + locks_free_lock_context(inode); if (!inode->i_nlink) { WARN_ON(atomic_long_read(&inode->i_sb->s_remove_count) == 0); atomic_long_dec(&inode->i_sb->s_remove_count); diff --git a/fs/locks.c b/fs/locks.c index 0af2387bd91e..ed9ab930d093 100644 --- a/fs/locks.c +++ b/fs/locks.c @@ -234,8 +234,10 @@ out: } void -locks_free_lock_context(struct file_lock_context *ctx) +locks_free_lock_context(struct inode *inode) { + struct file_lock_context *ctx = inode->i_flctx; + if (ctx) { WARN_ON_ONCE(!list_empty(&ctx->flc_flock)); WARN_ON_ONCE(!list_empty(&ctx->flc_posix)); diff --git a/include/linux/fs.h b/include/linux/fs.h index cbf08d5c246e..6c4983aceb02 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1042,7 +1042,7 @@ extern int fcntl_setlease(unsigned int fd, struct file *filp, long arg); extern int fcntl_getlease(struct file *filp); /* fs/locks.c */ -void locks_free_lock_context(struct file_lock_context *ctx); +void locks_free_lock_context(struct inode *inode); void locks_free_lock(struct file_lock *fl); extern void locks_init_lock(struct file_lock *); extern struct file_lock * locks_alloc_lock(void); @@ -1103,7 +1103,7 @@ static inline int fcntl_getlease(struct file *filp) } static inline void -locks_free_lock_context(struct file_lock_context *ctx) +locks_free_lock_context(struct inode *inode) { } |