[thin_repair/thin_dump] Change the label type for empty leaves
Empty leaves now are treated as bottom-level leaves, so that empty devices could be recovered.
This commit is contained in:
parent
c2e6db74b9
commit
d1e8168fb6
@ -438,6 +438,14 @@ namespace {
|
|||||||
// in the bottom 24 bits. This means every block/time apart from block 0
|
// in the bottom 24 bits. This means every block/time apart from block 0
|
||||||
// will result in a value that's outside the range of the metadata device.
|
// will result in a value that's outside the range of the metadata device.
|
||||||
bool is_top_level(node_ref<uint64_traits> &n) {
|
bool is_top_level(node_ref<uint64_traits> &n) {
|
||||||
|
// A leaf node of value-size 8 and without mappings should be
|
||||||
|
// treated as a bottom-level leaf, so that it could be referenced
|
||||||
|
// by top-level nodes, if any. On the other hand, an empty
|
||||||
|
// top-level leaf doesn't help repairing.
|
||||||
|
if (!n.get_nr_entries()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
auto nr_metadata_blocks = bm_.get_nr_blocks();
|
auto nr_metadata_blocks = bm_.get_nr_blocks();
|
||||||
|
|
||||||
for (unsigned i = 0; i < n.get_nr_entries(); i++)
|
for (unsigned i = 0; i < n.get_nr_entries(); i++)
|
||||||
|
Loading…
Reference in New Issue
Block a user