mm: write_cache_pages cleanups
Get rid of some complex expressions from flow control statements, add a comment, remove some duplicate code. Signed-off-by: Nick Piggin <npiggin@suse.de> Cc: Chris Mason <chris.mason@oracle.com> Cc: Dave Chinner <david@fromorbit.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
05fe478dd0
commit
5a3d5c9813
1 changed files with 22 additions and 12 deletions
|
@ -899,11 +899,14 @@ int write_cache_pages(struct address_space *mapping,
|
|||
}
|
||||
retry:
|
||||
done_index = index;
|
||||
while (!done && (index <= end) &&
|
||||
(nr_pages = pagevec_lookup_tag(&pvec, mapping, &index,
|
||||
PAGECACHE_TAG_DIRTY,
|
||||
min(end - index, (pgoff_t)PAGEVEC_SIZE-1) + 1))) {
|
||||
unsigned i;
|
||||
while (!done && (index <= end)) {
|
||||
int i;
|
||||
|
||||
nr_pages = pagevec_lookup_tag(&pvec, mapping, &index,
|
||||
PAGECACHE_TAG_DIRTY,
|
||||
min(end - index, (pgoff_t)PAGEVEC_SIZE-1) + 1);
|
||||
if (nr_pages == 0)
|
||||
break;
|
||||
|
||||
for (i = 0; i < nr_pages; i++) {
|
||||
struct page *page = pvec.pages[i];
|
||||
|
@ -919,7 +922,16 @@ int write_cache_pages(struct address_space *mapping,
|
|||
*/
|
||||
lock_page(page);
|
||||
|
||||
/*
|
||||
* Page truncated or invalidated. We can freely skip it
|
||||
* then, even for data integrity operations: the page
|
||||
* has disappeared concurrently, so there could be no
|
||||
* real expectation of this data interity operation
|
||||
* even if there is now a new, dirty page at the same
|
||||
* pagecache address.
|
||||
*/
|
||||
if (unlikely(page->mapping != mapping)) {
|
||||
continue_unlock:
|
||||
unlock_page(page);
|
||||
continue;
|
||||
}
|
||||
|
@ -930,18 +942,15 @@ int write_cache_pages(struct address_space *mapping,
|
|||
* end == -1 in that case.
|
||||
*/
|
||||
done = 1;
|
||||
unlock_page(page);
|
||||
continue;
|
||||
goto continue_unlock;
|
||||
}
|
||||
|
||||
if (wbc->sync_mode != WB_SYNC_NONE)
|
||||
wait_on_page_writeback(page);
|
||||
|
||||
if (PageWriteback(page) ||
|
||||
!clear_page_dirty_for_io(page)) {
|
||||
unlock_page(page);
|
||||
continue;
|
||||
}
|
||||
!clear_page_dirty_for_io(page))
|
||||
goto continue_unlock;
|
||||
|
||||
ret = (*writepage)(page, wbc, data);
|
||||
if (unlikely(ret)) {
|
||||
|
@ -964,7 +973,8 @@ int write_cache_pages(struct address_space *mapping,
|
|||
}
|
||||
|
||||
if (wbc->sync_mode == WB_SYNC_NONE) {
|
||||
if (--wbc->nr_to_write <= 0)
|
||||
wbc->nr_to_write--;
|
||||
if (wbc->nr_to_write <= 0)
|
||||
done = 1;
|
||||
}
|
||||
if (wbc->nonblocking && bdi_write_congested(bdi)) {
|
||||
|
|
Loading…
Reference in a new issue