Showing error 621

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


Source:

389                        transaction->t_tid == this_tid) {
390                int batch_count = 0;
391                struct buffer_head *bhs[NR_BATCH];
392                struct journal_head *jh;
393                int retry = 0, err;
394
395                while (!retry && transaction->t_checkpoint_list) {
396                        struct buffer_head *bh;
397
398                        jh = transaction->t_checkpoint_list;
399                        bh = jh2bh(jh);
400                        if (!jbd_trylock_bh_state(bh)) {
401                                jbd_sync_bh(journal, bh);
402                                retry = 1;
403                                break;
404                        }
405                        retry = __process_buffer(journal, jh, bhs, &batch_count,
406                                                 transaction);
407                        if (retry < 0 && !result)
408                                result = retry;
409                        if (!retry && (need_resched() ||
410                                spin_needbreak(&journal->j_list_lock))) {
411                                spin_unlock(&journal->j_list_lock);
412                                retry = 1;
413                                break;
414                        }
415                }
416
417                if (batch_count) {
418                        if (!retry) {
419                                spin_unlock(&journal->j_list_lock);
420                                retry = 1;
421                        }
422                        __flush_batch(journal, bhs, &batch_count);
423                }
424
425                if (retry) {
426                        spin_lock(&journal->j_list_lock);
427                        goto restart;
428                }
429                /*
Show full sources