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_buf_item.c |
Line in file: | 1147 |
Project: | Linux Kernel |
Project version: | 2.6.28 |
Tools: |
Stanse
(1.2)
|
Entered: | 2012-05-21 20:30:05 UTC |
1117 * care of cleaning up the buffer itself. 1118 */ 1119/* ARGSUSED */ 1120void 1121xfs_buf_iodone( 1122 xfs_buf_t *bp, 1123 xfs_buf_log_item_t *bip) 1124{ 1125 struct xfs_mount *mp; 1126 1127 ASSERT(bip->bli_buf == bp); 1128 1129 xfs_buf_rele(bp); 1130 mp = bip->bli_item.li_mountp; 1131 1132 /* 1133 * If we are forcibly shutting down, this may well be 1134 * off the AIL already. That's because we simulate the 1135 * log-committed callbacks to unpin these buffers. Or we may never 1136 * have put this item on AIL because of the transaction was 1137 * aborted forcibly. xfs_trans_delete_ail() takes care of these. 1138 * 1139 * Either way, AIL is useless if we're forcing a shutdown. 1140 */ 1141 spin_lock(&mp->m_ail_lock); 1142 /* 1143 * xfs_trans_delete_ail() drops the AIL lock. 1144 */ 1145 xfs_trans_delete_ail(mp, (xfs_log_item_t *)bip); 1146 xfs_buf_item_free(bip); 1147} 1148 1149#if defined(XFS_BLI_TRACE) 1150void 1151xfs_buf_item_trace( 1152 char *id, 1153 xfs_buf_log_item_t *bip) 1154{ 1155 xfs_buf_t *bp; 1156 ASSERT(bip->bli_trace != NULL); 1157