]> git.neil.brown.name Git - lafs-utils.git/blob - lib/lafs_print_state.c
d3c8b05e1a22c81e60dc6b30615766a386e21f8c
[lafs-utils.git] / lib / lafs_print_state.c
1 #include <uuid/uuid.h>
2 #include <lafs/lafs.h>
3 #include <stdio.h>
4 #include "internal.h"
5
6 void lafs_print_state(struct lafs_state *state, int size)
7 {
8         char uuidstr[37];
9         u32 crc, crc2;
10         int l;
11         int maxss;
12
13         printf("Stateblock:\n");
14         printf(" IDtag      : %.16s\n", state->idtag);
15         printf(" Version    : %.15s\n", state->version);
16         uuid_unparse(state->uuid, uuidstr);
17         printf(" UUID       : %s\n", uuidstr);
18         printf(" Checksum   : %08x", (int) __le32_to_cpu(state->checksum));
19         crc = state->checksum;
20         state->checksum = 0;
21         crc2 = crc32(0, (uint32_t*)state, size);
22         state->checksum = crc;
23         if (crc2 == crc)
24                 printf(" (correct)\n");
25         else
26                 printf(" (expected %08x)\n", (unsigned int)__le32_to_cpu(crc2));
27         printf(" Seq        : %d\n", (int)__le32_to_cpu(state->seq));
28         printf(" Levels     : %d\n", (int)__le32_to_cpu(state->levels));
29         printf(" Devices    : %d\n", (int)__le32_to_cpu(state->devices));
30         printf(" MaxSnap    : %d\n", (int)__le32_to_cpu(state->maxsnapshot));
31         printf(" NextYouth  : %d\n", (int)__le16_to_cpu(state->nextyouth));
32         if (__le16_to_cpu(state->nonlog_dev) < 0xFFFF) {
33                 printf(" NonLogSeg  : %d\n", (int)__le32_to_cpu(state->nonlog_segment));
34                 printf(" NonLogDev  : %d\n", (int)__le16_to_cpu(state->nonlog_dev));
35                 printf(" NonLogOff  : %d\n", (int)__le16_to_cpu(state->nonlog_offset));
36         }
37
38         printf(" CheckPoint : %llu\n",
39                (unsigned long long)__le64_to_cpu(state->checkpointcluster));
40         maxss = __le32_to_cpu(state->maxsnapshot);
41         if (maxss > (size - sizeof(*state)) / 4)
42                 maxss = (size - sizeof(*state)) / 4;
43         for (l=0; l < maxss; l++)
44                 printf(" Root[%d]    : %llu\n", l+1, 
45                        (unsigned long long)__le64_to_cpu(state->root_inodes[l]));
46
47         printf("\n");
48 }
49