Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5a3d5c98 authored by Nick Piggin's avatar Nick Piggin Committed by Linus Torvalds
Browse files

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: default avatarNick Piggin <npiggin@suse.de>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Dave Chinner <david@fromorbit.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 05fe478d
Loading
Loading
Loading
Loading
+22 −12
Original line number Original line Diff line number Diff line
@@ -899,11 +899,14 @@ int write_cache_pages(struct address_space *mapping,
	}
	}
retry:
retry:
	done_index = index;
	done_index = index;
	while (!done && (index <= end) &&
	while (!done && (index <= end)) {
	       (nr_pages = pagevec_lookup_tag(&pvec, mapping, &index,
		int i;

		nr_pages = pagevec_lookup_tag(&pvec, mapping, &index,
			      PAGECACHE_TAG_DIRTY,
			      PAGECACHE_TAG_DIRTY,
					      min(end - index, (pgoff_t)PAGEVEC_SIZE-1) + 1))) {
			      min(end - index, (pgoff_t)PAGEVEC_SIZE-1) + 1);
		unsigned i;
		if (nr_pages == 0)
			break;


		for (i = 0; i < nr_pages; i++) {
		for (i = 0; i < nr_pages; i++) {
			struct page *page = pvec.pages[i];
			struct page *page = pvec.pages[i];
@@ -919,7 +922,16 @@ int write_cache_pages(struct address_space *mapping,
			 */
			 */
			lock_page(page);
			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)) {
			if (unlikely(page->mapping != mapping)) {
continue_unlock:
				unlock_page(page);
				unlock_page(page);
				continue;
				continue;
			}
			}
@@ -930,18 +942,15 @@ int write_cache_pages(struct address_space *mapping,
				 * end == -1 in that case.
				 * end == -1 in that case.
				 */
				 */
				done = 1;
				done = 1;
				unlock_page(page);
				goto continue_unlock;
				continue;
			}
			}


			if (wbc->sync_mode != WB_SYNC_NONE)
			if (wbc->sync_mode != WB_SYNC_NONE)
				wait_on_page_writeback(page);
				wait_on_page_writeback(page);


			if (PageWriteback(page) ||
			if (PageWriteback(page) ||
			    !clear_page_dirty_for_io(page)) {
			    !clear_page_dirty_for_io(page))
				unlock_page(page);
				goto continue_unlock;
				continue;
			}


			ret = (*writepage)(page, wbc, data);
			ret = (*writepage)(page, wbc, data);
			if (unlikely(ret)) {
			if (unlikely(ret)) {
@@ -964,7 +973,8 @@ int write_cache_pages(struct address_space *mapping,
 			}
 			}


			if (wbc->sync_mode == WB_SYNC_NONE) {
			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;
					done = 1;
			}
			}
			if (wbc->nonblocking && bdi_write_congested(bdi)) {
			if (wbc->nonblocking && bdi_write_congested(bdi)) {