Btrfs: Explicitly send a root objectid to count_snapshots_in_path

Signed-off-by: Chris Mason <chris.mason@oracle.com>
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index d6243c2..91c2b27 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -688,7 +688,7 @@
 	struct btrfs_path *path;
 	u64 bytenr;
 	u64 found_objectid;
-	u64 root_objectid = 0;
+	u64 root_objectid = root->root_key.objectid;
 	u32 total_count = 0;
 	u32 cur_count;
 	u32 refs;
@@ -749,15 +749,11 @@
 					  struct btrfs_extent_ref);
 		found_objectid = btrfs_ref_root(l, ref_item);
 
-		if (found_objectid != root_objectid)
-			total_count++;
-
-		if (total_count > 1)
-			goto out;
-
-		if (root_objectid == 0)
-			root_objectid = found_objectid;
-
+		if (found_objectid != root_objectid) {
+			total_count = 2;
+			break;
+		}
+		total_count = 1;
 		path->slots[0]++;
 	}
 	if (cur_count == 0) {
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index d6de469..5003a86 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -1770,6 +1770,11 @@
 again:
 	em = lookup_extent_mapping(em_tree, start, end);
 	if (em) {
+		if (em->start > start) {
+			printk("get_extent start %Lu em start %Lu\n",
+			       start, em->start);
+			WARN_ON(1);
+		}
 		goto out;
 	}
 	if (!em) {
@@ -1952,23 +1957,6 @@
 	return extent_bmap(mapping, iblock, btrfs_get_extent);
 }
 
-static int btrfs_prepare_write(struct file *file, struct page *page,
-			       unsigned from, unsigned to)
-{
-	struct btrfs_root *root = BTRFS_I(page->mapping->host)->root;
-	int err;
-
-	mutex_lock(&root->fs_info->fs_mutex);
-	err = btrfs_check_free_space(root, PAGE_CACHE_SIZE, 0);
-	mutex_unlock(&root->fs_info->fs_mutex);
-	if (err)
-		return -ENOSPC;
-
-	return extent_prepare_write(&BTRFS_I(page->mapping->host)->extent_tree,
-				    page->mapping->host, page, from, to,
-				    btrfs_get_extent);
-}
-
 int btrfs_readpage(struct file *file, struct page *page)
 {
 	struct extent_map_tree *tree;
@@ -2120,21 +2108,6 @@
 	btrfs_btree_balance_dirty(root, nr);
 }
 
-int btrfs_commit_write(struct file *file, struct page *page,
-		       unsigned from, unsigned to)
-{
-	loff_t pos = ((loff_t)page->index << PAGE_CACHE_SHIFT) + to;
-	struct inode *inode = page->mapping->host;
-
-	btrfs_cow_one_page(inode, page, PAGE_CACHE_SIZE);
-
-	if (pos > inode->i_size) {
-		i_size_write(inode, pos);
-		mark_inode_dirty(inode);
-	}
-	return 0;
-}
-
 static int create_subvol(struct btrfs_root *root, char *name, int namelen)
 {
 	struct btrfs_trans_handle *trans;
@@ -2930,8 +2903,6 @@
 	.writepages	= btrfs_writepages,
 	.readpages	= btrfs_readpages,
 	.sync_page	= block_sync_page,
-	.prepare_write	= btrfs_prepare_write,
-	.commit_write	= btrfs_commit_write,
 	.bmap		= btrfs_bmap,
 	.invalidatepage = btrfs_invalidatepage,
 	.releasepage	= btrfs_releasepage,