summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2004-04-11 23:15:33 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-04-11 23:15:33 -0700
commit60af4464478e1511998ad82d7cba3fbfb6c258dd (patch)
tree72a135a60691645f8995e145b80a9d036ff4cf3f
parent082825b67cf534c0ddee9168133b160ca4ba593f (diff)
[PATCH] mpage_writepages() cleanup
Rework the code layout a bit. No logic change.
-rw-r--r--fs/mpage.c47
1 files changed, 23 insertions, 24 deletions
diff --git a/fs/mpage.c b/fs/mpage.c
index 24233fbd20ad..1f7d045fa905 100644
--- a/fs/mpage.c
+++ b/fs/mpage.c
@@ -650,32 +650,31 @@ retry:
if (wbc->sync_mode != WB_SYNC_NONE)
wait_on_page_writeback(page);
- if (page->mapping == mapping && !PageWriteback(page) &&
- clear_page_dirty_for_io(page)) {
- if (writepage) {
- ret = (*writepage)(page, wbc);
- if (ret) {
- if (ret == -ENOSPC)
- set_bit(AS_ENOSPC,
- &mapping->flags);
- else
- set_bit(AS_EIO,
- &mapping->flags);
- }
- } else {
- bio = mpage_writepage(bio, page,
- get_block, &last_block_in_bio,
- &ret, wbc);
- }
- if (ret || (--(wbc->nr_to_write) <= 0))
- done = 1;
- if (wbc->nonblocking &&
- bdi_write_congested(bdi)) {
- wbc->encountered_congestion = 1;
- done = 1;
+ if (page->mapping != mapping || PageWriteback(page) ||
+ !clear_page_dirty_for_io(page)) {
+ unlock_page(page);
+ continue;
+ }
+
+ if (writepage) {
+ ret = (*writepage)(page, wbc);
+ if (ret) {
+ if (ret == -ENOSPC)
+ set_bit(AS_ENOSPC,
+ &mapping->flags);
+ else
+ set_bit(AS_EIO,
+ &mapping->flags);
}
} else {
- unlock_page(page);
+ bio = mpage_writepage(bio, page, get_block,
+ &last_block_in_bio, &ret, wbc);
+ }
+ if (ret || (--(wbc->nr_to_write) <= 0))
+ done = 1;
+ if (wbc->nonblocking && bdi_write_congested(bdi)) {
+ wbc->encountered_congestion = 1;
+ done = 1;
}
}
pagevec_release(&pvec);