aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/print-tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/print-tree.c')
-rw-r--r--fs/btrfs/print-tree.c79
1 files changed, 28 insertions, 51 deletions
diff --git a/fs/btrfs/print-tree.c b/fs/btrfs/print-tree.c
index 32022f3f169b..0088bedc8631 100644
--- a/fs/btrfs/print-tree.c
+++ b/fs/btrfs/print-tree.c
@@ -26,14 +26,12 @@ static void print_chunk(struct extent_buffer *eb, struct btrfs_chunk *chunk)
26 int i; 26 int i;
27 printk(KERN_INFO "\t\tchunk length %llu owner %llu type %llu " 27 printk(KERN_INFO "\t\tchunk length %llu owner %llu type %llu "
28 "num_stripes %d\n", 28 "num_stripes %d\n",
29 (unsigned long long)btrfs_chunk_length(eb, chunk), 29 btrfs_chunk_length(eb, chunk), btrfs_chunk_owner(eb, chunk),
30 (unsigned long long)btrfs_chunk_owner(eb, chunk), 30 btrfs_chunk_type(eb, chunk), num_stripes);
31 (unsigned long long)btrfs_chunk_type(eb, chunk),
32 num_stripes);
33 for (i = 0 ; i < num_stripes ; i++) { 31 for (i = 0 ; i < num_stripes ; i++) {
34 printk(KERN_INFO "\t\t\tstripe %d devid %llu offset %llu\n", i, 32 printk(KERN_INFO "\t\t\tstripe %d devid %llu offset %llu\n", i,
35 (unsigned long long)btrfs_stripe_devid_nr(eb, chunk, i), 33 btrfs_stripe_devid_nr(eb, chunk, i),
36 (unsigned long long)btrfs_stripe_offset_nr(eb, chunk, i)); 34 btrfs_stripe_offset_nr(eb, chunk, i));
37 } 35 }
38} 36}
39static void print_dev_item(struct extent_buffer *eb, 37static void print_dev_item(struct extent_buffer *eb,
@@ -41,18 +39,18 @@ static void print_dev_item(struct extent_buffer *eb,
41{ 39{
42 printk(KERN_INFO "\t\tdev item devid %llu " 40 printk(KERN_INFO "\t\tdev item devid %llu "
43 "total_bytes %llu bytes used %llu\n", 41 "total_bytes %llu bytes used %llu\n",
44 (unsigned long long)btrfs_device_id(eb, dev_item), 42 btrfs_device_id(eb, dev_item),
45 (unsigned long long)btrfs_device_total_bytes(eb, dev_item), 43 btrfs_device_total_bytes(eb, dev_item),
46 (unsigned long long)btrfs_device_bytes_used(eb, dev_item)); 44 btrfs_device_bytes_used(eb, dev_item));
47} 45}
48static void print_extent_data_ref(struct extent_buffer *eb, 46static void print_extent_data_ref(struct extent_buffer *eb,
49 struct btrfs_extent_data_ref *ref) 47 struct btrfs_extent_data_ref *ref)
50{ 48{
51 printk(KERN_INFO "\t\textent data backref root %llu " 49 printk(KERN_INFO "\t\textent data backref root %llu "
52 "objectid %llu offset %llu count %u\n", 50 "objectid %llu offset %llu count %u\n",
53 (unsigned long long)btrfs_extent_data_ref_root(eb, ref), 51 btrfs_extent_data_ref_root(eb, ref),
54 (unsigned long long)btrfs_extent_data_ref_objectid(eb, ref), 52 btrfs_extent_data_ref_objectid(eb, ref),
55 (unsigned long long)btrfs_extent_data_ref_offset(eb, ref), 53 btrfs_extent_data_ref_offset(eb, ref),
56 btrfs_extent_data_ref_count(eb, ref)); 54 btrfs_extent_data_ref_count(eb, ref));
57} 55}
58 56
@@ -87,9 +85,8 @@ static void print_extent_item(struct extent_buffer *eb, int slot)
87 flags = btrfs_extent_flags(eb, ei); 85 flags = btrfs_extent_flags(eb, ei);
88 86
89 printk(KERN_INFO "\t\textent refs %llu gen %llu flags %llu\n", 87 printk(KERN_INFO "\t\textent refs %llu gen %llu flags %llu\n",
90 (unsigned long long)btrfs_extent_refs(eb, ei), 88 btrfs_extent_refs(eb, ei), btrfs_extent_generation(eb, ei),
91 (unsigned long long)btrfs_extent_generation(eb, ei), 89 flags);
92 (unsigned long long)flags);
93 90
94 if (flags & BTRFS_EXTENT_FLAG_TREE_BLOCK) { 91 if (flags & BTRFS_EXTENT_FLAG_TREE_BLOCK) {
95 struct btrfs_tree_block_info *info; 92 struct btrfs_tree_block_info *info;
@@ -97,9 +94,8 @@ static void print_extent_item(struct extent_buffer *eb, int slot)
97 btrfs_tree_block_key(eb, info, &key); 94 btrfs_tree_block_key(eb, info, &key);
98 printk(KERN_INFO "\t\ttree block key (%llu %u %llu) " 95 printk(KERN_INFO "\t\ttree block key (%llu %u %llu) "
99 "level %d\n", 96 "level %d\n",
100 (unsigned long long)btrfs_disk_key_objectid(&key), 97 btrfs_disk_key_objectid(&key), key.type,
101 key.type, 98 btrfs_disk_key_offset(&key),
102 (unsigned long long)btrfs_disk_key_offset(&key),
103 btrfs_tree_block_level(eb, info)); 99 btrfs_tree_block_level(eb, info));
104 iref = (struct btrfs_extent_inline_ref *)(info + 1); 100 iref = (struct btrfs_extent_inline_ref *)(info + 1);
105 } else { 101 } else {
@@ -115,11 +111,11 @@ static void print_extent_item(struct extent_buffer *eb, int slot)
115 switch (type) { 111 switch (type) {
116 case BTRFS_TREE_BLOCK_REF_KEY: 112 case BTRFS_TREE_BLOCK_REF_KEY:
117 printk(KERN_INFO "\t\ttree block backref " 113 printk(KERN_INFO "\t\ttree block backref "
118 "root %llu\n", (unsigned long long)offset); 114 "root %llu\n", offset);
119 break; 115 break;
120 case BTRFS_SHARED_BLOCK_REF_KEY: 116 case BTRFS_SHARED_BLOCK_REF_KEY:
121 printk(KERN_INFO "\t\tshared block backref " 117 printk(KERN_INFO "\t\tshared block backref "
122 "parent %llu\n", (unsigned long long)offset); 118 "parent %llu\n", offset);
123 break; 119 break;
124 case BTRFS_EXTENT_DATA_REF_KEY: 120 case BTRFS_EXTENT_DATA_REF_KEY:
125 dref = (struct btrfs_extent_data_ref *)(&iref->offset); 121 dref = (struct btrfs_extent_data_ref *)(&iref->offset);
@@ -129,8 +125,7 @@ static void print_extent_item(struct extent_buffer *eb, int slot)
129 sref = (struct btrfs_shared_data_ref *)(iref + 1); 125 sref = (struct btrfs_shared_data_ref *)(iref + 1);
130 printk(KERN_INFO "\t\tshared data backref " 126 printk(KERN_INFO "\t\tshared data backref "
131 "parent %llu count %u\n", 127 "parent %llu count %u\n",
132 (unsigned long long)offset, 128 offset, btrfs_shared_data_ref_count(eb, sref));
133 btrfs_shared_data_ref_count(eb, sref));
134 break; 129 break;
135 default: 130 default:
136 BUG(); 131 BUG();
@@ -148,9 +143,9 @@ static void print_extent_ref_v0(struct extent_buffer *eb, int slot)
148 ref0 = btrfs_item_ptr(eb, slot, struct btrfs_extent_ref_v0); 143 ref0 = btrfs_item_ptr(eb, slot, struct btrfs_extent_ref_v0);
149 printk("\t\textent back ref root %llu gen %llu " 144 printk("\t\textent back ref root %llu gen %llu "
150 "owner %llu num_refs %lu\n", 145 "owner %llu num_refs %lu\n",
151 (unsigned long long)btrfs_ref_root_v0(eb, ref0), 146 btrfs_ref_root_v0(eb, ref0),
152 (unsigned long long)btrfs_ref_generation_v0(eb, ref0), 147 btrfs_ref_generation_v0(eb, ref0),
153 (unsigned long long)btrfs_ref_objectid_v0(eb, ref0), 148 btrfs_ref_objectid_v0(eb, ref0),
154 (unsigned long)btrfs_ref_count_v0(eb, ref0)); 149 (unsigned long)btrfs_ref_count_v0(eb, ref0));
155} 150}
156#endif 151#endif
@@ -196,39 +191,34 @@ void btrfs_print_leaf(struct btrfs_root *root, struct extent_buffer *l)
196 nr = btrfs_header_nritems(l); 191 nr = btrfs_header_nritems(l);
197 192
198 btrfs_info(root->fs_info, "leaf %llu total ptrs %d free space %d", 193 btrfs_info(root->fs_info, "leaf %llu total ptrs %d free space %d",
199 (unsigned long long)btrfs_header_bytenr(l), nr, 194 btrfs_header_bytenr(l), nr, btrfs_leaf_free_space(root, l));
200 btrfs_leaf_free_space(root, l));
201 for (i = 0 ; i < nr ; i++) { 195 for (i = 0 ; i < nr ; i++) {
202 item = btrfs_item_nr(l, i); 196 item = btrfs_item_nr(l, i);
203 btrfs_item_key_to_cpu(l, &key, i); 197 btrfs_item_key_to_cpu(l, &key, i);
204 type = btrfs_key_type(&key); 198 type = btrfs_key_type(&key);
205 printk(KERN_INFO "\titem %d key (%llu %u %llu) itemoff %d " 199 printk(KERN_INFO "\titem %d key (%llu %u %llu) itemoff %d "
206 "itemsize %d\n", 200 "itemsize %d\n",
207 i, 201 i, key.objectid, type, key.offset,
208 (unsigned long long)key.objectid, type,
209 (unsigned long long)key.offset,
210 btrfs_item_offset(l, item), btrfs_item_size(l, item)); 202 btrfs_item_offset(l, item), btrfs_item_size(l, item));
211 switch (type) { 203 switch (type) {
212 case BTRFS_INODE_ITEM_KEY: 204 case BTRFS_INODE_ITEM_KEY:
213 ii = btrfs_item_ptr(l, i, struct btrfs_inode_item); 205 ii = btrfs_item_ptr(l, i, struct btrfs_inode_item);
214 printk(KERN_INFO "\t\tinode generation %llu size %llu " 206 printk(KERN_INFO "\t\tinode generation %llu size %llu "
215 "mode %o\n", 207 "mode %o\n",
216 (unsigned long long)
217 btrfs_inode_generation(l, ii), 208 btrfs_inode_generation(l, ii),
218 (unsigned long long)btrfs_inode_size(l, ii), 209 btrfs_inode_size(l, ii),
219 btrfs_inode_mode(l, ii)); 210 btrfs_inode_mode(l, ii));
220 break; 211 break;
221 case BTRFS_DIR_ITEM_KEY: 212 case BTRFS_DIR_ITEM_KEY:
222 di = btrfs_item_ptr(l, i, struct btrfs_dir_item); 213 di = btrfs_item_ptr(l, i, struct btrfs_dir_item);
223 btrfs_dir_item_key_to_cpu(l, di, &found_key); 214 btrfs_dir_item_key_to_cpu(l, di, &found_key);
224 printk(KERN_INFO "\t\tdir oid %llu type %u\n", 215 printk(KERN_INFO "\t\tdir oid %llu type %u\n",
225 (unsigned long long)found_key.objectid, 216 found_key.objectid,
226 btrfs_dir_type(l, di)); 217 btrfs_dir_type(l, di));
227 break; 218 break;
228 case BTRFS_ROOT_ITEM_KEY: 219 case BTRFS_ROOT_ITEM_KEY:
229 ri = btrfs_item_ptr(l, i, struct btrfs_root_item); 220 ri = btrfs_item_ptr(l, i, struct btrfs_root_item);
230 printk(KERN_INFO "\t\troot data bytenr %llu refs %u\n", 221 printk(KERN_INFO "\t\troot data bytenr %llu refs %u\n",
231 (unsigned long long)
232 btrfs_disk_root_bytenr(l, ri), 222 btrfs_disk_root_bytenr(l, ri),
233 btrfs_disk_root_refs(l, ri)); 223 btrfs_disk_root_refs(l, ri));
234 break; 224 break;
@@ -264,17 +254,12 @@ void btrfs_print_leaf(struct btrfs_root *root, struct extent_buffer *l)
264 } 254 }
265 printk(KERN_INFO "\t\textent data disk bytenr %llu " 255 printk(KERN_INFO "\t\textent data disk bytenr %llu "
266 "nr %llu\n", 256 "nr %llu\n",
267 (unsigned long long)
268 btrfs_file_extent_disk_bytenr(l, fi), 257 btrfs_file_extent_disk_bytenr(l, fi),
269 (unsigned long long)
270 btrfs_file_extent_disk_num_bytes(l, fi)); 258 btrfs_file_extent_disk_num_bytes(l, fi));
271 printk(KERN_INFO "\t\textent data offset %llu " 259 printk(KERN_INFO "\t\textent data offset %llu "
272 "nr %llu ram %llu\n", 260 "nr %llu ram %llu\n",
273 (unsigned long long)
274 btrfs_file_extent_offset(l, fi), 261 btrfs_file_extent_offset(l, fi),
275 (unsigned long long)
276 btrfs_file_extent_num_bytes(l, fi), 262 btrfs_file_extent_num_bytes(l, fi),
277 (unsigned long long)
278 btrfs_file_extent_ram_bytes(l, fi)); 263 btrfs_file_extent_ram_bytes(l, fi));
279 break; 264 break;
280 case BTRFS_EXTENT_REF_V0_KEY: 265 case BTRFS_EXTENT_REF_V0_KEY:
@@ -288,7 +273,6 @@ void btrfs_print_leaf(struct btrfs_root *root, struct extent_buffer *l)
288 bi = btrfs_item_ptr(l, i, 273 bi = btrfs_item_ptr(l, i,
289 struct btrfs_block_group_item); 274 struct btrfs_block_group_item);
290 printk(KERN_INFO "\t\tblock group used %llu\n", 275 printk(KERN_INFO "\t\tblock group used %llu\n",
291 (unsigned long long)
292 btrfs_disk_block_group_used(l, bi)); 276 btrfs_disk_block_group_used(l, bi));
293 break; 277 break;
294 case BTRFS_CHUNK_ITEM_KEY: 278 case BTRFS_CHUNK_ITEM_KEY:
@@ -305,13 +289,9 @@ void btrfs_print_leaf(struct btrfs_root *root, struct extent_buffer *l)
305 printk(KERN_INFO "\t\tdev extent chunk_tree %llu\n" 289 printk(KERN_INFO "\t\tdev extent chunk_tree %llu\n"
306 "\t\tchunk objectid %llu chunk offset %llu " 290 "\t\tchunk objectid %llu chunk offset %llu "
307 "length %llu\n", 291 "length %llu\n",
308 (unsigned long long)
309 btrfs_dev_extent_chunk_tree(l, dev_extent), 292 btrfs_dev_extent_chunk_tree(l, dev_extent),
310 (unsigned long long)
311 btrfs_dev_extent_chunk_objectid(l, dev_extent), 293 btrfs_dev_extent_chunk_objectid(l, dev_extent),
312 (unsigned long long)
313 btrfs_dev_extent_chunk_offset(l, dev_extent), 294 btrfs_dev_extent_chunk_offset(l, dev_extent),
314 (unsigned long long)
315 btrfs_dev_extent_length(l, dev_extent)); 295 btrfs_dev_extent_length(l, dev_extent));
316 break; 296 break;
317 case BTRFS_DEV_STATS_KEY: 297 case BTRFS_DEV_STATS_KEY:
@@ -344,16 +324,13 @@ void btrfs_print_tree(struct btrfs_root *root, struct extent_buffer *c)
344 return; 324 return;
345 } 325 }
346 btrfs_info(root->fs_info, "node %llu level %d total ptrs %d free spc %u", 326 btrfs_info(root->fs_info, "node %llu level %d total ptrs %d free spc %u",
347 (unsigned long long)btrfs_header_bytenr(c), 327 btrfs_header_bytenr(c), level, nr,
348 level, nr, (u32)BTRFS_NODEPTRS_PER_BLOCK(root) - nr); 328 (u32)BTRFS_NODEPTRS_PER_BLOCK(root) - nr);
349 for (i = 0; i < nr; i++) { 329 for (i = 0; i < nr; i++) {
350 btrfs_node_key_to_cpu(c, &key, i); 330 btrfs_node_key_to_cpu(c, &key, i);
351 printk(KERN_INFO "\tkey %d (%llu %u %llu) block %llu\n", 331 printk(KERN_INFO "\tkey %d (%llu %u %llu) block %llu\n",
352 i, 332 i, key.objectid, key.type, key.offset,
353 (unsigned long long)key.objectid, 333 btrfs_node_blockptr(c, i));
354 key.type,
355 (unsigned long long)key.offset,
356 (unsigned long long)btrfs_node_blockptr(c, i));
357 } 334 }
358 for (i = 0; i < nr; i++) { 335 for (i = 0; i < nr; i++) {
359 struct extent_buffer *next = read_tree_block(root, 336 struct extent_buffer *next = read_tree_block(root,