Btrfs: switch back to wait_on_page_writeback to wait on metadata writes

The extent based waiting was using more CPU, and other fixes have helped
with the unplug storm problems.

Signed-off-by: Chris Mason <chris.mason@oracle.com>

diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index e9c8ebee..c2c3b42 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -332,7 +332,6 @@
 	int werr = 0;
 	struct page *page;
 	struct inode *btree_inode = root->fs_info->btree_inode;
-	struct extent_io_tree *io_tree = &BTRFS_I(btree_inode)->io_tree;
 	u64 start = 0;
 	u64 end;
 	unsigned long index;
@@ -373,11 +372,6 @@
 			page_cache_release(page);
 		}
 	}
-	/*
-	 * we unplug once and then use the wait_on_extent_bit for
-	 * everything else
-	 */
-	blk_run_address_space(btree_inode->i_mapping);
 	while(1) {
 		ret = find_first_extent_bit(dirty_pages, 0, &start, &end,
 					    EXTENT_DIRTY);
@@ -398,28 +392,7 @@
 				if (err)
 					werr = err;
 			}
-			if (PageWriteback(page)) {
-				/*
-				 * we don't wait on the page writeback bit
-				 * because that triggers a lot of unplugs.
-				 * The extent bits are much nicer to
-				 * the disks, but come with a slightly
-				 * higher latency because we aren't forcing
-				 * unplugs.
-				 */
-				wait_on_extent_writeback(io_tree,
-					 page_offset(page),
-					 page_offset(page) +
-					 PAGE_CACHE_SIZE - 1);
-			}
-			if (PageWriteback(page)) {
-				/*
-				 * the state bits get cleared before the
-				 * page bits, lets add some extra
-				 * paranoia here
-				 */
-				wait_on_page_writeback(page);
-			}
+			wait_on_page_writeback(page);
 			page_cache_release(page);
 			cond_resched();
 		}