[PATCH] Fix path slots selection in btrfs_search_forward

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

We should decrease the found slot by one as btrfs_search_slot does
when bin_search return 1 and node level > 0.

Regards
YZ
---
diff -r 3f0eee804974 ctree.c
--- a/ctree.c	Thu Jun 26 10:34:20 2008 -0400
+++ b/ctree.c	Tue Jul 15 22:05:54 2008 +0800
@@ -2996,6 +2996,7 @@ int btrfs_search_forward(struct btrfs_ro
 	struct extent_buffer *cur;
 	struct btrfs_key found_key;
 	int slot;
+	int sret;
 	u32 nritems;
 	int level;
 	int ret = 1;
@@ -3013,7 +3014,7 @@ again:
 	while(1) {
 		nritems = btrfs_header_nritems(cur);
 		level = btrfs_header_level(cur);
-		bin_search(cur, min_key, level, &slot);
+		sret = bin_search(cur, min_key, level, &slot);

 		/* at level = 0, we're done, setup the path and exit */
 		if (level == 0) {
@@ -3022,6 +3023,8 @@ again:
 			btrfs_item_key_to_cpu(cur, &found_key, slot);
 			goto out;
 		}
+		if (sret && slot > 0)
+			slot--;
 		/*
 		 * check this node pointer against the cache_only and
 		 * min_trans parameters.  If it isn't in cache or is too
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux