From: Chris Mason Some latency improvements for the reiserfs data=ordered code from Takashi. --- 25-akpm/fs/reiserfs/journal.c | 16 ++++------------ 1 files changed, 4 insertions(+), 12 deletions(-) diff -puN fs/reiserfs/journal.c~reiserfs-ordered-lat fs/reiserfs/journal.c --- 25/fs/reiserfs/journal.c~reiserfs-ordered-lat Wed Mar 24 15:14:54 2004 +++ 25-akpm/fs/reiserfs/journal.c Wed Mar 24 15:14:54 2004 @@ -788,8 +788,7 @@ static int write_ordered_buffers(spinloc if (chunk.nr) write_ordered_chunk(&chunk); wait_on_buffer(bh); - if (need_resched) - schedule(); + cond_resched(); spin_lock(lock); goto loop_next; } @@ -803,11 +802,7 @@ static int write_ordered_buffers(spinloc } loop_next: put_bh(bh); - if (chunk.nr == 0 && need_resched) { - spin_unlock(lock); - schedule(); - spin_lock(lock); - } + cond_resched_lock(lock); } if (chunk.nr) { spin_unlock(lock); @@ -828,11 +823,7 @@ loop_next: if (!buffer_uptodate(bh)) ret = -EIO; put_bh(bh); - if (need_resched()) { - spin_unlock(lock); - schedule(); - spin_lock(lock); - } + cond_resched_lock(lock); } spin_unlock(lock); return ret; @@ -3469,6 +3460,7 @@ static int do_journal_end(struct reiserf next = cn->next ; free_cnode(p_s_sb, cn) ; cn = next ; + cond_resched(); } /* we are done with both the c_bh and d_bh, but _