Showing error 622

User: Jiri Slaby
Error type: Double Unlock
Error type description: Some lock is unlocked twice unintentionally in a sequence
File location: fs/jbd/checkpoint.c
Line in file: 184
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:20:57 UTC


Source:

154                                /* We were able to recover space; yay! */
155                                ;
156                        } else if (tid) {
157                                log_wait_commit(journal, tid);
158                        } else {
159                                printk(KERN_ERR "%s: needed %d blocks and "
160                                       "only had %d space available\n",
161                                       __func__, nblocks, space_left);
162                                printk(KERN_ERR "%s: no way to get more "
163                                       "journal space\n", __func__);
164                                WARN_ON(1);
165                                journal_abort(journal, 0);
166                        }
167                        spin_lock(&journal->j_state_lock);
168                } else {
169                        spin_unlock(&journal->j_list_lock);
170                }
171                mutex_unlock(&journal->j_checkpoint_mutex);
172        }
173}
174
175/*
176 * We were unable to perform jbd_trylock_bh_state() inside j_list_lock.
177 * The caller must restart a list walk.  Wait for someone else to run
178 * jbd_unlock_bh_state().
179 */
180static void jbd_sync_bh(journal_t *journal, struct buffer_head *bh)
181        __releases(journal->j_list_lock)
182{
183        get_bh(bh);
184        spin_unlock(&journal->j_list_lock);
185        jbd_lock_bh_state(bh);
186        jbd_unlock_bh_state(bh);
187        put_bh(bh);
188}
189
190/*
191 * Clean up transaction's list of buffers submitted for io.
192 * We wait for any pending IO to complete and remove any clean
193 * buffers. Note that we take the buffers in the opposite ordering
194 * from the one in which they were submitted for IO.
Show full sources