Hello, attached patch changes ll_rw_block() calls in Reiserfs to make sure that submitted data really reach the disk (the patch relies on the previous ll_rw_block() patch).
Honza -- Jan Kara <[EMAIL PROTECTED]> SuSE CR Labs
We need to be sure that current data in buffer are sent to disk. Hence we need to call ll_rw_block() with SWRITE. Signed-off-by: Jan Kara <[EMAIL PROTECTED]> diff -rupX /home/jack/.kerndiffexclude linux-2.6.12-1-forgetfix/fs/reiserfs/journal.c linux-2.6.12-2-ll_rw_block-fix/fs/reiserfs/journal.c --- linux-2.6.12-1-forgetfix/fs/reiserfs/journal.c 2005-06-28 13:26:20.000000000 +0200 +++ linux-2.6.12-2-ll_rw_block-fix/fs/reiserfs/journal.c 2005-07-07 07:20:19.000000000 +0200 @@ -966,7 +966,7 @@ static int flush_commit_list(struct supe SB_ONDISK_JOURNAL_SIZE(s); tbh = journal_find_get_block(s, bn) ; if (buffer_dirty(tbh)) /* redundant, ll_rw_block() checks */ - ll_rw_block(WRITE, 1, &tbh) ; + ll_rw_block(SWRITE, 1, &tbh) ; put_bh(tbh) ; } atomic_dec(&journal->j_async_throttle); @@ -1977,7 +1977,7 @@ abort_replay: /* flush out the real blocks */ for (i = 0 ; i < get_desc_trans_len(desc) ; i++) { set_buffer_dirty(real_blocks[i]) ; - ll_rw_block(WRITE, 1, real_blocks + i) ; + ll_rw_block(SWRITE, 1, real_blocks + i) ; } for (i = 0 ; i < get_desc_trans_len(desc) ; i++) { wait_on_buffer(real_blocks[i]) ;