On Thu, Apr 18, 2013 at 10:54:55AM -0600, Liu Bo wrote: > 1) Right now scrub_stripe() is looping in some unnecessary cases: > * when the found extent item's objectid has been out of the dev extent's range > but we haven't finish scanning all the range within the dev extent > * when all the items has been processed but we haven't finish scanning all the > range within the dev extent > > In both cases, we can just finish the loop to save costs. > > 2) Besides, when the found extent item's length is larger than the stripe len(64k), > we don't have to release the path and search again as it'll get at the same key > used in the last loop, we can instead increase the logical cursor in place till > all space of the extent is scanned. > > 3) And we use 0 as the key's offset to search btree, then get to previous item > to find a smaller item, and again have to move to the next one to get the right > item. Setting offset=-1 and previous_item() is the correct way. > > 4) As we won't find any checksum at offset unless this 'offset' is in a data > extent, we can just find checksum when we're really going to scrub an extent. > > Signed-off-by: Liu Bo <bo.li.liu@xxxxxxxxxx> A big chunk of this doesn't apply to btrfs-next and I don't feel comfortable manually applying it, please rebase and resend. Thanks, Josef -- 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
