#include <sys/types.h>
#include <sys/stat.h>
#include "mdadm.h"
-#include <asm/byteorder.h>
#define min(a,b) (((a) < (b)) ? (a) : (b))
info = malloc(sizeof(*info));
if (info == NULL) {
+#if __GNUC__ < 3
fprintf(stderr, Name ": failed to allocate %d bytes\n",
+ (int)sizeof(*info));
+#else
+ fprintf(stderr, Name ": failed to allocate %zd bytes\n",
sizeof(*info));
+#endif
return NULL;
}
if (read_bits < total_bits) { /* file truncated... */
fprintf(stderr, Name ": WARNING: bitmap file is not large "
- "enough for array size %llu!\n\n", info->sb.sync_size);
+ "enough for array size %llu!\n\n",
+ (unsigned long long)info->sb.sync_size);
total_bits = read_bits;
}
out:
/* just look at device... */
lseek(fd, 0, 0);
} else {
- st->ss->locate_bitmap(st, fd);
+ st->ss->locate_bitmap(st, fd, NULL);
}
ioctl(fd, BLKFLSBUF, 0); /* make sure we read current data */
*stp = st;
fprintf(stderr, Name ": invalid bitmap magic 0x%x, the bitmap file appears to be corrupted\n", sb->magic);
}
printf(" Version : %d\n", sb->version);
- if (sb->version != BITMAP_MAJOR) {
+ if (sb->version < BITMAP_MAJOR_LO ||
+ sb->version > BITMAP_MAJOR_HI) {
fprintf(stderr, Name ": unknown bitmap version %d, either the bitmap file is corrupted or you need to upgrade your tools\n", sb->version);
goto free_info;
}
*(__u32 *)(sb->uuid+8),
*(__u32 *)(sb->uuid+12));
}
- printf(" Events : %llu\n", sb->events);
- printf(" Events Cleared : %llu\n", sb->events_cleared);
+ 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));
printf(" Chunksize : %s\n", human_chunksize(sb->chunksize));
printf(" Daemon : %ds flush period\n", sb->daemon_sleep);
else
sprintf(buf, "Normal");
printf(" Write Mode : %s\n", buf);
- printf(" Sync Size : %llu%s\n", sb->sync_size/2,
+ printf(" Sync Size : %llu%s\n", (unsigned long long)sb->sync_size/2,
human_size(sb->sync_size * 512));
if (brief)
goto free_info;
}
int CreateBitmap(char *filename, int force, char uuid[16],
- unsigned long chunksize, unsigned long daemon_sleep,
- unsigned long write_behind,
- unsigned long long array_size)
+ unsigned long chunksize, unsigned long daemon_sleep,
+ unsigned long write_behind,
+ unsigned long long array_size /* sectors */,
+ int major)
{
/*
* Create a bitmap file with a superblock and (optionally) a full bitmap
memset(&sb, 0, sizeof(sb));
sb.magic = BITMAP_MAGIC;
- sb.version = BITMAP_MAJOR;
+ sb.version = major;
if (uuid != NULL)
memcpy(sb.uuid, uuid, 16);
sb.chunksize = chunksize;
rv = 0;
/* make the file be the right size (well, to the nearest byte) */
- ftruncate(fileno(fp), filesize);
+ if (ftruncate(fileno(fp), filesize))
+ perror("ftrunace");
out:
fclose(fp);
if (rv)