Greetings, I am looking at the code of search_iobuf() in btrfs-find-root.c.(3.17.3) I see that we probe nodesize blocks one by one, and for each block we check: - its owner is what we are looking for - its header->bytenr is what we are looking at currently - its level is not too small - it has valid checksum - it has the desired generation If all those conditions are true, we declare this block as a root and end the program. How do we actually know that it's a root and not a leaf or an intermediate node? What if we are searching for a root of the root tree, which has one node and two leafs (all have the same highest transid), and one of the leafs has "logical" lower than the actual root, i.e., it comes first in our scan. Then we will declare this leaf as a root, won't we? Or somehow the root always has the lowest "logical"? Also, I am confused by this line: level = h_level; This means that if we encounter a block that "seems good", we will skip all other blocks that have lower level. Is this intended? Thanks, Alex. -- 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
