Showing error 635

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: 428
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:20:57 UTC


Source:

398                                result = retry;
399                        if (!retry && (need_resched() ||
400                                spin_needbreak(&journal->j_list_lock))) {
401                                spin_unlock(&journal->j_list_lock);
402                                retry = 1;
403                                break;
404                        }
405                }
406
407                if (batch_count) {
408                        if (!retry) {
409                                spin_unlock(&journal->j_list_lock);
410                                retry = 1;
411                        }
412                        __flush_batch(journal, bhs, &batch_count);
413                }
414
415                if (retry) {
416                        spin_lock(&journal->j_list_lock);
417                        goto restart;
418                }
419                /*
420                 * Now we have cleaned up the first transaction's checkpoint
421                 * list. Let's clean up the second one
422                 */
423                err = __wait_cp_io(journal, transaction);
424                if (!result)
425                        result = err;
426        }
427out:
428        spin_unlock(&journal->j_list_lock);
429        if (result < 0)
430                journal_abort(journal, result);
431        else
432                result = cleanup_journal_tail(journal);
433
434        return (result < 0) ? result : 0;
435}
436
437/*
438 * Check the list of checkpoint transactions for the journal to see if
Show full sources