From 2e1a992e3103624af48f1501aaad4e4d8317f88c Mon Sep 17 00:00:00 2001
From: Chris Mason <chris.mason@oracle.com>
Date: Wed, 20 Feb 2008 15:44:32 -0500
Subject: [PATCH] Btrfs: Make sure bio pages are adjacent during bulk csumming

Signed-off-by: Chris Mason <chris.mason@oracle.com>
---
 fs/btrfs/file-item.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c
index ee25e50e7c04..e17cce33fe95 100644
--- a/fs/btrfs/file-item.c
+++ b/fs/btrfs/file-item.c
@@ -161,7 +161,6 @@ int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans,
 	unsigned long map_len;
 	unsigned long map_start;
 
-
 	path = btrfs_alloc_path();
 	BUG_ON(!path);
 again:
@@ -315,8 +314,11 @@ next_bvec:
 	if (bio_index < bio->bi_vcnt) {
 		item = (struct btrfs_csum_item *)((char *)item +
 						  BTRFS_CRC32_SIZE);
-		if (item < item_end)
+		if (item < item_end && offset + PAGE_CACHE_SIZE ==
+		    page_offset(bvec->bv_page)) {
+			offset = page_offset(bvec->bv_page);
 			goto next_bvec;
+		}
 	}
 	if (eb_token) {
 		unmap_extent_buffer(leaf, eb_token, KM_IRQ1);