diff options
author | Jan Kara <jack@suse.cz> | 2005-09-06 18:19:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-07 19:57:56 -0400 |
commit | 096125f31ae3aa2c7271463b9986dd228e0da089 (patch) | |
tree | 2a6f0b066acf1031ffffca98a44c870bcead23b4 /fs | |
parent | 53778ffde601c962ad9250c4998df7de6f428246 (diff) |
[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: Jan Kara <jack@suse.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ufs/balloc.c | 12 | ||||
-rw-r--r-- | fs/ufs/ialloc.c | 6 | ||||
-rw-r--r-- | fs/ufs/truncate.c | 9 |
3 files changed, 9 insertions, 18 deletions
diff --git a/fs/ufs/balloc.c b/fs/ufs/balloc.c index 997640c99c7d..faf1512173eb 100644 --- a/fs/ufs/balloc.c +++ b/fs/ufs/balloc.c | |||
@@ -114,8 +114,7 @@ void ufs_free_fragments (struct inode * inode, unsigned fragment, unsigned count | |||
114 | ubh_mark_buffer_dirty (USPI_UBH); | 114 | ubh_mark_buffer_dirty (USPI_UBH); |
115 | ubh_mark_buffer_dirty (UCPI_UBH); | 115 | ubh_mark_buffer_dirty (UCPI_UBH); |
116 | if (sb->s_flags & MS_SYNCHRONOUS) { | 116 | if (sb->s_flags & MS_SYNCHRONOUS) { |
117 | ubh_wait_on_buffer (UCPI_UBH); | 117 | ubh_ll_rw_block (SWRITE, 1, (struct ufs_buffer_head **)&ucpi); |
118 | ubh_ll_rw_block (WRITE, 1, (struct ufs_buffer_head **)&ucpi); | ||
119 | ubh_wait_on_buffer (UCPI_UBH); | 118 | ubh_wait_on_buffer (UCPI_UBH); |
120 | } | 119 | } |
121 | sb->s_dirt = 1; | 120 | sb->s_dirt = 1; |
@@ -200,8 +199,7 @@ do_more: | |||
200 | ubh_mark_buffer_dirty (USPI_UBH); | 199 | ubh_mark_buffer_dirty (USPI_UBH); |
201 | ubh_mark_buffer_dirty (UCPI_UBH); | 200 | ubh_mark_buffer_dirty (UCPI_UBH); |
202 | if (sb->s_flags & MS_SYNCHRONOUS) { | 201 | if (sb->s_flags & MS_SYNCHRONOUS) { |
203 | ubh_wait_on_buffer (UCPI_UBH); | 202 | ubh_ll_rw_block (SWRITE, 1, (struct ufs_buffer_head **)&ucpi); |
204 | ubh_ll_rw_block (WRITE, 1, (struct ufs_buffer_head **)&ucpi); | ||
205 | ubh_wait_on_buffer (UCPI_UBH); | 203 | ubh_wait_on_buffer (UCPI_UBH); |
206 | } | 204 | } |
207 | 205 | ||
@@ -459,8 +457,7 @@ ufs_add_fragments (struct inode * inode, unsigned fragment, | |||
459 | ubh_mark_buffer_dirty (USPI_UBH); | 457 | ubh_mark_buffer_dirty (USPI_UBH); |
460 | ubh_mark_buffer_dirty (UCPI_UBH); | 458 | ubh_mark_buffer_dirty (UCPI_UBH); |
461 | if (sb->s_flags & MS_SYNCHRONOUS) { | 459 | if (sb->s_flags & MS_SYNCHRONOUS) { |
462 | ubh_wait_on_buffer (UCPI_UBH); | 460 | ubh_ll_rw_block (SWRITE, 1, (struct ufs_buffer_head **)&ucpi); |
463 | ubh_ll_rw_block (WRITE, 1, (struct ufs_buffer_head **)&ucpi); | ||
464 | ubh_wait_on_buffer (UCPI_UBH); | 461 | ubh_wait_on_buffer (UCPI_UBH); |
465 | } | 462 | } |
466 | sb->s_dirt = 1; | 463 | sb->s_dirt = 1; |
@@ -585,8 +582,7 @@ succed: | |||
585 | ubh_mark_buffer_dirty (USPI_UBH); | 582 | ubh_mark_buffer_dirty (USPI_UBH); |
586 | ubh_mark_buffer_dirty (UCPI_UBH); | 583 | ubh_mark_buffer_dirty (UCPI_UBH); |
587 | if (sb->s_flags & MS_SYNCHRONOUS) { | 584 | if (sb->s_flags & MS_SYNCHRONOUS) { |
588 | ubh_wait_on_buffer (UCPI_UBH); | 585 | ubh_ll_rw_block (SWRITE, 1, (struct ufs_buffer_head **)&ucpi); |
589 | ubh_ll_rw_block (WRITE, 1, (struct ufs_buffer_head **)&ucpi); | ||
590 | ubh_wait_on_buffer (UCPI_UBH); | 586 | ubh_wait_on_buffer (UCPI_UBH); |
591 | } | 587 | } |
592 | sb->s_dirt = 1; | 588 | sb->s_dirt = 1; |
diff --git a/fs/ufs/ialloc.c b/fs/ufs/ialloc.c index 61a6b1542fc5..0938945b9cbc 100644 --- a/fs/ufs/ialloc.c +++ b/fs/ufs/ialloc.c | |||
@@ -124,8 +124,7 @@ void ufs_free_inode (struct inode * inode) | |||
124 | ubh_mark_buffer_dirty (USPI_UBH); | 124 | ubh_mark_buffer_dirty (USPI_UBH); |
125 | ubh_mark_buffer_dirty (UCPI_UBH); | 125 | ubh_mark_buffer_dirty (UCPI_UBH); |
126 | if (sb->s_flags & MS_SYNCHRONOUS) { | 126 | if (sb->s_flags & MS_SYNCHRONOUS) { |
127 | ubh_wait_on_buffer (UCPI_UBH); | 127 | ubh_ll_rw_block (SWRITE, 1, (struct ufs_buffer_head **) &ucpi); |
128 | ubh_ll_rw_block (WRITE, 1, (struct ufs_buffer_head **) &ucpi); | ||
129 | ubh_wait_on_buffer (UCPI_UBH); | 128 | ubh_wait_on_buffer (UCPI_UBH); |
130 | } | 129 | } |
131 | 130 | ||
@@ -249,8 +248,7 @@ cg_found: | |||
249 | ubh_mark_buffer_dirty (USPI_UBH); | 248 | ubh_mark_buffer_dirty (USPI_UBH); |
250 | ubh_mark_buffer_dirty (UCPI_UBH); | 249 | ubh_mark_buffer_dirty (UCPI_UBH); |
251 | if (sb->s_flags & MS_SYNCHRONOUS) { | 250 | if (sb->s_flags & MS_SYNCHRONOUS) { |
252 | ubh_wait_on_buffer (UCPI_UBH); | 251 | ubh_ll_rw_block (SWRITE, 1, (struct ufs_buffer_head **) &ucpi); |
253 | ubh_ll_rw_block (WRITE, 1, (struct ufs_buffer_head **) &ucpi); | ||
254 | ubh_wait_on_buffer (UCPI_UBH); | 252 | ubh_wait_on_buffer (UCPI_UBH); |
255 | } | 253 | } |
256 | sb->s_dirt = 1; | 254 | sb->s_dirt = 1; |
diff --git a/fs/ufs/truncate.c b/fs/ufs/truncate.c index e312bf8bad9f..61d2e35012a4 100644 --- a/fs/ufs/truncate.c +++ b/fs/ufs/truncate.c | |||
@@ -285,8 +285,7 @@ next:; | |||
285 | } | 285 | } |
286 | } | 286 | } |
287 | if (IS_SYNC(inode) && ind_ubh && ubh_buffer_dirty(ind_ubh)) { | 287 | if (IS_SYNC(inode) && ind_ubh && ubh_buffer_dirty(ind_ubh)) { |
288 | ubh_wait_on_buffer (ind_ubh); | 288 | ubh_ll_rw_block (SWRITE, 1, &ind_ubh); |
289 | ubh_ll_rw_block (WRITE, 1, &ind_ubh); | ||
290 | ubh_wait_on_buffer (ind_ubh); | 289 | ubh_wait_on_buffer (ind_ubh); |
291 | } | 290 | } |
292 | ubh_brelse (ind_ubh); | 291 | ubh_brelse (ind_ubh); |
@@ -353,8 +352,7 @@ static int ufs_trunc_dindirect (struct inode *inode, unsigned offset, __fs32 *p) | |||
353 | } | 352 | } |
354 | } | 353 | } |
355 | if (IS_SYNC(inode) && dind_bh && ubh_buffer_dirty(dind_bh)) { | 354 | if (IS_SYNC(inode) && dind_bh && ubh_buffer_dirty(dind_bh)) { |
356 | ubh_wait_on_buffer (dind_bh); | 355 | ubh_ll_rw_block (SWRITE, 1, &dind_bh); |
357 | ubh_ll_rw_block (WRITE, 1, &dind_bh); | ||
358 | ubh_wait_on_buffer (dind_bh); | 356 | ubh_wait_on_buffer (dind_bh); |
359 | } | 357 | } |
360 | ubh_brelse (dind_bh); | 358 | ubh_brelse (dind_bh); |
@@ -418,8 +416,7 @@ static int ufs_trunc_tindirect (struct inode * inode) | |||
418 | } | 416 | } |
419 | } | 417 | } |
420 | if (IS_SYNC(inode) && tind_bh && ubh_buffer_dirty(tind_bh)) { | 418 | if (IS_SYNC(inode) && tind_bh && ubh_buffer_dirty(tind_bh)) { |
421 | ubh_wait_on_buffer (tind_bh); | 419 | ubh_ll_rw_block (SWRITE, 1, &tind_bh); |
422 | ubh_ll_rw_block (WRITE, 1, &tind_bh); | ||
423 | ubh_wait_on_buffer (tind_bh); | 420 | ubh_wait_on_buffer (tind_bh); |
424 | } | 421 | } |
425 | ubh_brelse (tind_bh); | 422 | ubh_brelse (tind_bh); |