]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - bitmap.c
imsm: add support for checkpointing via 'curr_migr_unit'
[thirdparty/mdadm.git] / bitmap.c
index 18101664fa1728e997bdb27826141d5a1f40cca7..088e37d0ad79f90bcf02c31684b2a2c9aeb6f8b4 100644 (file)
--- a/bitmap.c
+++ b/bitmap.c
@@ -20,8 +20,6 @@
 
 #include "mdadm.h"
 
-#define min(a,b) (((a) < (b)) ? (a) : (b))
-
 inline void sb_le_to_cpu(bitmap_super_t *sb)
 {
        sb->magic = __le32_to_cpu(sb->magic);
@@ -163,7 +161,7 @@ bitmap_info_t *bitmap_fd_read(int fd, int brief)
 
        sb_le_to_cpu(&info->sb); /* convert superblock to CPU byte ordering */
 
-       if (brief || info->sb.sync_size == 0)
+       if (brief || info->sb.sync_size == 0 || info->sb.chunksize == 0)
                goto out;
 
        /* read the rest of the file counting total bits and dirty bits --
@@ -271,6 +269,7 @@ int ExamineBitmap(char *filename, int brief, struct supertype *st)
        int rv = 1;
        char buf[64];
        int swap;
+       __u32 uuid32[4];
 
        info = bitmap_file_read(filename, brief, &st);
        if (!info)
@@ -298,19 +297,20 @@ int ExamineBitmap(char *filename, int brief, struct supertype *st)
 #else
                swap = 1;
 #endif
-       if (swap) {
-       printf("            UUID : %08x:%08x:%08x:%08x\n",
-                                       swapl(*(__u32 *)(sb->uuid+0)),
-                                       swapl(*(__u32 *)(sb->uuid+4)),
-                                       swapl(*(__u32 *)(sb->uuid+8)),
-                                       swapl(*(__u32 *)(sb->uuid+12)));
-       } else {
-       printf("            UUID : %08x:%08x:%08x:%08x\n",
-                                       *(__u32 *)(sb->uuid+0),
-                                       *(__u32 *)(sb->uuid+4),
-                                       *(__u32 *)(sb->uuid+8),
-                                       *(__u32 *)(sb->uuid+12));
-       }
+       memcpy(uuid32, sb->uuid, 16);
+       if (swap)
+               printf("            UUID : %08x:%08x:%08x:%08x\n",
+                      swapl(uuid32[0]),
+                      swapl(uuid32[1]),
+                      swapl(uuid32[2]),
+                      swapl(uuid32[3]));
+       else
+               printf("            UUID : %08x:%08x:%08x:%08x\n",
+                      uuid32[0],
+                      uuid32[1],
+                      uuid32[2],
+                      uuid32[3]);
+
        printf("          Events : %llu\n", (unsigned long long)sb->events);
        printf("  Events Cleared : %llu\n", (unsigned long long)sb->events_cleared);
        printf("           State : %s\n", bitmap_state(sb->state));