~ubuntu-branches/debian/sid/btrfs-tools/sid

« back to all changes in this revision

Viewing changes to print-tree.c

  • Committer: Package Import Robot
  • Author(s): Dimitri John Ledkov
  • Date: 2015-01-18 00:14:20 UTC
  • mfrom: (1.3.8)
  • Revision ID: package-import@ubuntu.com-20150118001420-90z2k03yd5mwivl0
Tags: 4.0-1
* New upstream release.
* Drop all patches.
* Experiment with dropping udev rules, in favour of systemd-udev builtin
  integration. (Closes: #772744)
* Move all binaries to /bin (Closes: #770806)
* Switch to autoconf based build system.

Show diffs side-by-side

added added

removed removed

Lines of Context:
203
203
        }
204
204
}
205
205
 
 
206
/* Caller should ensure sizeof(*ret)>= 26 "OFF|SCANNING|INCONSISTENT" */
 
207
static void qgroup_flags_to_str(u64 flags, char *ret)
 
208
{
 
209
        if (flags & BTRFS_QGROUP_STATUS_FLAG_ON)
 
210
                strcpy(ret, "ON");
 
211
        else
 
212
                strcpy(ret, "OFF");
 
213
 
 
214
        if (flags & BTRFS_QGROUP_STATUS_FLAG_RESCAN)
 
215
                strcat(ret, "|SCANNING");
 
216
        if (flags & BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
 
217
                strcat(ret, "|INCONSISTENT");
 
218
}
 
219
 
206
220
void print_chunk(struct extent_buffer *eb, struct btrfs_chunk *chunk)
207
221
{
208
222
        int num_stripes = btrfs_chunk_num_stripes(eb, chunk);
312
326
                }
313
327
                strcat(ret, "TREE_BLOCK");
314
328
        }
 
329
        if (flags & BTRFS_BLOCK_FLAG_FULL_BACKREF) {
 
330
                strcat(ret, "|");
 
331
                strcat(ret, "FULL_BACKREF");
 
332
        }
315
333
}
316
334
 
317
335
void print_extent_item(struct extent_buffer *eb, int slot, int metadata)
641
659
                printf("%llu", (unsigned long long)objectid); /* device id */
642
660
                return;
643
661
        case BTRFS_QGROUP_RELATION_KEY:
644
 
                printf("%llu/%llu", objectid >> 48,
645
 
                        objectid & ((1ll << 48) - 1));
 
662
                printf("%llu/%llu", btrfs_qgroup_level(objectid),
 
663
                       btrfs_qgroup_subvid(objectid));
646
664
                return;
647
665
        case BTRFS_UUID_KEY_SUBVOL:
648
666
        case BTRFS_UUID_KEY_RECEIVED_SUBVOL:
739
757
        case BTRFS_QGROUP_RELATION_KEY:
740
758
        case BTRFS_QGROUP_INFO_KEY:
741
759
        case BTRFS_QGROUP_LIMIT_KEY:
742
 
                printf(" %llu/%llu)", (unsigned long long)(offset >> 48),
743
 
                        (unsigned long long)(offset & ((1ll << 48) - 1)));
 
760
                printf(" %llu/%llu)", btrfs_qgroup_level(offset),
 
761
                       btrfs_qgroup_subvid(offset));
744
762
                break;
745
763
        case BTRFS_UUID_KEY_SUBVOL:
746
764
        case BTRFS_UUID_KEY_RECEIVED_SUBVOL:
797
815
        u32 nr = btrfs_header_nritems(l);
798
816
        u64 objectid;
799
817
        u32 type;
800
 
        char bg_flags_str[32];
 
818
        char flags_str[32];
801
819
 
802
820
        printf("leaf %llu items %d free space %d generation %llu owner %llu\n",
803
821
                (unsigned long long)btrfs_header_bytenr(l), nr,
916
934
                                            struct btrfs_block_group_item);
917
935
                        read_extent_buffer(l, &bg_item, (unsigned long)bi,
918
936
                                           sizeof(bg_item));
919
 
                        memset(bg_flags_str, 0, sizeof(bg_flags_str));
 
937
                        memset(flags_str, 0, sizeof(flags_str));
920
938
                        bg_flags_to_str(btrfs_block_group_flags(&bg_item),
921
 
                                        bg_flags_str);
 
939
                                        flags_str);
922
940
                        printf("\t\tblock group used %llu chunk_objectid %llu flags %s\n",
923
941
                               (unsigned long long)btrfs_block_group_used(&bg_item),
924
942
                               (unsigned long long)btrfs_block_group_chunk_objectid(&bg_item),
925
 
                               bg_flags_str);
 
943
                               flags_str);
926
944
                        break;
927
945
                case BTRFS_CHUNK_ITEM_KEY:
928
946
                        print_chunk(l, btrfs_item_ptr(l, i, struct btrfs_chunk));
949
967
                case BTRFS_QGROUP_STATUS_KEY:
950
968
                        qg_status = btrfs_item_ptr(l, i,
951
969
                                        struct btrfs_qgroup_status_item);
952
 
                        printf("\t\tversion %llu generation %llu flags %#llx "
 
970
                        memset(flags_str, 0, sizeof(flags_str));
 
971
                        qgroup_flags_to_str(btrfs_qgroup_status_flags(l, qg_status),
 
972
                                        flags_str);
 
973
                        printf("\t\tversion %llu generation %llu flags %s "
953
974
                                "scan %lld\n",
954
975
                                (unsigned long long)
955
976
                                btrfs_qgroup_status_version(l, qg_status),
956
977
                                (unsigned long long)
957
978
                                btrfs_qgroup_status_generation(l, qg_status),
958
 
                                (unsigned long long)
959
 
                                btrfs_qgroup_status_flags(l, qg_status),
 
979
                                flags_str,
960
980
                                (unsigned long long)
961
981
                                btrfs_qgroup_status_scan(l, qg_status));
962
982
                        break;
1060
1080
                                             btrfs_node_blockptr(eb, i),
1061
1081
                                             size,
1062
1082
                                             btrfs_node_ptr_generation(eb, i));
1063
 
                if (!next) {
 
1083
                if (!extent_buffer_uptodate(next)) {
1064
1084
                        fprintf(stderr, "failed to read %llu in tree %llu\n",
1065
1085
                                (unsigned long long)btrfs_node_blockptr(eb, i),
1066
1086
                                (unsigned long long)btrfs_header_owner(eb));