Showing error 1004

User: Jiri Slaby
Error type: Leaving function in locked state
Error type description: Some lock is not unlocked on all paths of a function, so it is leaked
File location: fs/xfs/xfs_inode_item.c
Line in file: 1019
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-03-02 21:35:18 UTC


Source:

 989         * the lock since it's cheaper, and then we recheck while
 990         * holding the lock before removing the inode from the AIL.
 991         */
 992        if (iip->ili_logged &&
 993            (iip->ili_item.li_lsn == iip->ili_flush_lsn)) {
 994                spin_lock(&ip->i_mount->m_ail_lock);
 995                if (iip->ili_item.li_lsn == iip->ili_flush_lsn) {
 996                        /*
 997                         * xfs_trans_delete_ail() drops the AIL lock.
 998                         */
 999                        xfs_trans_delete_ail(ip->i_mount,
1000                                             (xfs_log_item_t*)iip);
1001                } else {
1002                        spin_unlock(&ip->i_mount->m_ail_lock);
1003                }
1004        }
1005
1006        iip->ili_logged = 0;
1007
1008        /*
1009         * Clear the ili_last_fields bits now that we know that the
1010         * data corresponding to them is safely on disk.
1011         */
1012        iip->ili_last_fields = 0;
1013
1014        /*
1015         * Release the inode's flush lock since we're done with it.
1016         */
1017        xfs_ifunlock(ip);
1018
1019        return;
1020}
1021
1022/*
1023 * This is the inode flushing abort routine.  It is called
1024 * from xfs_iflush when the filesystem is shutting down to clean
1025 * up the inode state.
1026 * It is responsible for removing the inode item
1027 * from the AIL if it has not been re-logged, and unlocking the inode's
1028 * flush lock.
1029 */
Show full sources