Showing error 643

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


Source:

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