lkml.org 
[lkml]   [2006]   [Jun]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[Patch] jbd commit code deadloop when installing Linux
    From
    Date
    We see system hang in ext3 jbd code
    when Linux install program anaconda copying
    packages.

    That is because anaconda is invoked from linuxrc
    in initrd when system_state is still SYSTEM_BOOTING.

    Thus the cond_resched checks in journal_commit_transaction
    will always return 1 without actually schedule,
    then the system fall into deadloop.

    The patch will fix the issue.

    Zou Nan hai

    Signed-off-by: Zou Nan hai <nanhai.zou@intel.com>


    --- linux-2.6.17/fs/jbd/commit.c 2006-06-18 09:49:35.000000000 +0800
    +++ b/fs/jbd/commit.c 2006-06-28 14:15:41.000000000 +0800
    @@ -625,8 +625,17 @@ wait_for_iobuf:
    wait_on_buffer(bh);
    goto wait_for_iobuf;
    }
    - if (cond_resched())
    - goto wait_for_iobuf;
    + if (cond_resched()) {
    + if (commit_transaction->t_iobuf_list != NULL) {
    + jh = commit_transaction->t_iobuf_list->b_tprev;
    + bh = jh2bh(jh);
    + if (buffer_locked(bh)) {
    + wait_on_buffer(bh);
    + goto wait_for_iobuf;
    + }
    + } else
    + break;
    + }

    if (unlikely(!buffer_uptodate(bh)))
    err = -EIO;
    @@ -681,8 +690,17 @@ wait_for_iobuf:
    wait_on_buffer(bh);
    goto wait_for_ctlbuf;
    }
    - if (cond_resched())
    - goto wait_for_ctlbuf;
    + if (cond_resched()) {
    + if(commit_transaction->t_log_list != NULL) {
    + jh = commit_transaction->t_log_list->b_tprev;
    + bh = jh2bh(jh);
    + if (buffer_locked(bh)) {
    + wait_on_buffer(bh);
    + goto wait_for_ctlbuf;
    + }
    + }else
    + break;
    + }

    if (unlikely(!buffer_uptodate(bh)))
    err = -EIO;
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-06-28 08:36    [W:0.023 / U:0.104 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site