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]) ; 

Reply via email to