Commit 096125f3 authored by Jan Kara's avatar Jan Kara Committed by Linus Torvalds

[PATCH] Change ll_rw_block() calls in UFS

We need to be sure that current data are sent to disk.  Hence we call
ll_rw_block() with SWRITE.
Signed-off-by: default avatarJan Kara <jack@suse.cz>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 53778ffd
...@@ -114,8 +114,7 @@ void ufs_free_fragments (struct inode * inode, unsigned fragment, unsigned count ...@@ -114,8 +114,7 @@ void ufs_free_fragments (struct inode * inode, unsigned fragment, unsigned count
ubh_mark_buffer_dirty (USPI_UBH); ubh_mark_buffer_dirty (USPI_UBH);
ubh_mark_buffer_dirty (UCPI_UBH); ubh_mark_buffer_dirty (UCPI_UBH);
if (sb->s_flags & MS_SYNCHRONOUS) { if (sb->s_flags & MS_SYNCHRONOUS) {
ubh_wait_on_buffer (UCPI_UBH); ubh_ll_rw_block (SWRITE, 1, (struct ufs_buffer_head **)&ucpi);
ubh_ll_rw_block (WRITE, 1, (struct ufs_buffer_head **)&ucpi);
ubh_wait_on_buffer (UCPI_UBH); ubh_wait_on_buffer (UCPI_UBH);
} }
sb->s_dirt = 1; sb->s_dirt = 1;
...@@ -200,8 +199,7 @@ void ufs_free_blocks (struct inode * inode, unsigned fragment, unsigned count) { ...@@ -200,8 +199,7 @@ void ufs_free_blocks (struct inode * inode, unsigned fragment, unsigned count) {
ubh_mark_buffer_dirty (USPI_UBH); ubh_mark_buffer_dirty (USPI_UBH);
ubh_mark_buffer_dirty (UCPI_UBH); ubh_mark_buffer_dirty (UCPI_UBH);
if (sb->s_flags & MS_SYNCHRONOUS) { if (sb->s_flags & MS_SYNCHRONOUS) {
ubh_wait_on_buffer (UCPI_UBH); ubh_ll_rw_block (SWRITE, 1, (struct ufs_buffer_head **)&ucpi);
ubh_ll_rw_block (WRITE, 1, (struct ufs_buffer_head **)&ucpi);
ubh_wait_on_buffer (UCPI_UBH); ubh_wait_on_buffer (UCPI_UBH);
} }
...@@ -459,8 +457,7 @@ ufs_add_fragments (struct inode * inode, unsigned fragment, ...@@ -459,8 +457,7 @@ ufs_add_fragments (struct inode * inode, unsigned fragment,
ubh_mark_buffer_dirty (USPI_UBH); ubh_mark_buffer_dirty (USPI_UBH);
ubh_mark_buffer_dirty (UCPI_UBH); ubh_mark_buffer_dirty (UCPI_UBH);
if (sb->s_flags & MS_SYNCHRONOUS) { if (sb->s_flags & MS_SYNCHRONOUS) {
ubh_wait_on_buffer (UCPI_UBH); ubh_ll_rw_block (SWRITE, 1, (struct ufs_buffer_head **)&ucpi);
ubh_ll_rw_block (WRITE, 1, (struct ufs_buffer_head **)&ucpi);
ubh_wait_on_buffer (UCPI_UBH); ubh_wait_on_buffer (UCPI_UBH);
} }
sb->s_dirt = 1; sb->s_dirt = 1;
...@@ -585,8 +582,7 @@ static unsigned ufs_alloc_fragments (struct inode * inode, unsigned cgno, ...@@ -585,8 +582,7 @@ static unsigned ufs_alloc_fragments (struct inode * inode, unsigned cgno,
ubh_mark_buffer_dirty (USPI_UBH); ubh_mark_buffer_dirty (USPI_UBH);
ubh_mark_buffer_dirty (UCPI_UBH); ubh_mark_buffer_dirty (UCPI_UBH);
if (sb->s_flags & MS_SYNCHRONOUS) { if (sb->s_flags & MS_SYNCHRONOUS) {
ubh_wait_on_buffer (UCPI_UBH); ubh_ll_rw_block (SWRITE, 1, (struct ufs_buffer_head **)&ucpi);
ubh_ll_rw_block (WRITE, 1, (struct ufs_buffer_head **)&ucpi);
ubh_wait_on_buffer (UCPI_UBH); ubh_wait_on_buffer (UCPI_UBH);
} }
sb->s_dirt = 1; sb->s_dirt = 1;
......
...@@ -124,8 +124,7 @@ void ufs_free_inode (struct inode * inode) ...@@ -124,8 +124,7 @@ void ufs_free_inode (struct inode * inode)
ubh_mark_buffer_dirty (USPI_UBH); ubh_mark_buffer_dirty (USPI_UBH);
ubh_mark_buffer_dirty (UCPI_UBH); ubh_mark_buffer_dirty (UCPI_UBH);
if (sb->s_flags & MS_SYNCHRONOUS) { if (sb->s_flags & MS_SYNCHRONOUS) {
ubh_wait_on_buffer (UCPI_UBH); ubh_ll_rw_block (SWRITE, 1, (struct ufs_buffer_head **) &ucpi);
ubh_ll_rw_block (WRITE, 1, (struct ufs_buffer_head **) &ucpi);
ubh_wait_on_buffer (UCPI_UBH); ubh_wait_on_buffer (UCPI_UBH);
} }
...@@ -249,8 +248,7 @@ struct inode * ufs_new_inode(struct inode * dir, int mode) ...@@ -249,8 +248,7 @@ struct inode * ufs_new_inode(struct inode * dir, int mode)
ubh_mark_buffer_dirty (USPI_UBH); ubh_mark_buffer_dirty (USPI_UBH);
ubh_mark_buffer_dirty (UCPI_UBH); ubh_mark_buffer_dirty (UCPI_UBH);
if (sb->s_flags & MS_SYNCHRONOUS) { if (sb->s_flags & MS_SYNCHRONOUS) {
ubh_wait_on_buffer (UCPI_UBH); ubh_ll_rw_block (SWRITE, 1, (struct ufs_buffer_head **) &ucpi);
ubh_ll_rw_block (WRITE, 1, (struct ufs_buffer_head **) &ucpi);
ubh_wait_on_buffer (UCPI_UBH); ubh_wait_on_buffer (UCPI_UBH);
} }
sb->s_dirt = 1; sb->s_dirt = 1;
......
...@@ -285,8 +285,7 @@ next:; ...@@ -285,8 +285,7 @@ next:;
} }
} }
if (IS_SYNC(inode) && ind_ubh && ubh_buffer_dirty(ind_ubh)) { if (IS_SYNC(inode) && ind_ubh && ubh_buffer_dirty(ind_ubh)) {
ubh_wait_on_buffer (ind_ubh); ubh_ll_rw_block (SWRITE, 1, &ind_ubh);
ubh_ll_rw_block (WRITE, 1, &ind_ubh);
ubh_wait_on_buffer (ind_ubh); ubh_wait_on_buffer (ind_ubh);
} }
ubh_brelse (ind_ubh); ubh_brelse (ind_ubh);
...@@ -353,8 +352,7 @@ static int ufs_trunc_dindirect (struct inode *inode, unsigned offset, __fs32 *p) ...@@ -353,8 +352,7 @@ static int ufs_trunc_dindirect (struct inode *inode, unsigned offset, __fs32 *p)
} }
} }
if (IS_SYNC(inode) && dind_bh && ubh_buffer_dirty(dind_bh)) { if (IS_SYNC(inode) && dind_bh && ubh_buffer_dirty(dind_bh)) {
ubh_wait_on_buffer (dind_bh); ubh_ll_rw_block (SWRITE, 1, &dind_bh);
ubh_ll_rw_block (WRITE, 1, &dind_bh);
ubh_wait_on_buffer (dind_bh); ubh_wait_on_buffer (dind_bh);
} }
ubh_brelse (dind_bh); ubh_brelse (dind_bh);
...@@ -418,8 +416,7 @@ static int ufs_trunc_tindirect (struct inode * inode) ...@@ -418,8 +416,7 @@ static int ufs_trunc_tindirect (struct inode * inode)
} }
} }
if (IS_SYNC(inode) && tind_bh && ubh_buffer_dirty(tind_bh)) { if (IS_SYNC(inode) && tind_bh && ubh_buffer_dirty(tind_bh)) {
ubh_wait_on_buffer (tind_bh); ubh_ll_rw_block (SWRITE, 1, &tind_bh);
ubh_ll_rw_block (WRITE, 1, &tind_bh);
ubh_wait_on_buffer (tind_bh); ubh_wait_on_buffer (tind_bh);
} }
ubh_brelse (tind_bh); ubh_brelse (tind_bh);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment