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
421
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