diff options
Diffstat (limited to 'super0.c')
-rw-r--r-- | super0.c | 23 |
1 files changed, 12 insertions, 11 deletions
@@ -405,7 +405,8 @@ static void getinfo_super0(struct supertype *st, struct mdinfo *info, char *map) info->array.utime = sb->utime; info->array.chunk_size = sb->chunk_size; info->array.state = sb->state; - info->component_size = sb->size*2; + info->component_size = sb->size; + info->component_size *= 2; if (sb->state & (1<<MD_SB_BITMAP_PRESENT)) info->bitmap_offset = 8; @@ -713,7 +714,7 @@ static int init_super0(struct supertype *st, mdu_array_info_t *info, if (posix_memalign((void**)&sb, 4096, MD_SB_BYTES + ROUND_UP(sizeof(bitmap_super_t), 4096)) != 0) { - pr_err("%s could not allocate superblock\n", __func__); + pr_err("could not allocate superblock\n"); return 0; } memset(sb, 0, MD_SB_BYTES + sizeof(bitmap_super_t)); @@ -900,7 +901,7 @@ static int write_init_super0(struct supertype *st) rv = store_super0(st, di->fd); if (rv == 0 && (sb->state & (1<<MD_SB_BITMAP_PRESENT))) - rv = st->ss->write_bitmap(st, di->fd); + rv = st->ss->write_bitmap(st, di->fd, NoUpdate); if (rv) pr_err("failed to write superblock to %s\n", @@ -929,7 +930,7 @@ static int compare_super0(struct supertype *st, struct supertype *tst) if (posix_memalign((void**)&first, 4096, MD_SB_BYTES + ROUND_UP(sizeof(struct bitmap_super_s), 4096)) != 0) { - pr_err("%s could not allocate superblock\n", __func__); + pr_err("could not allocate superblock\n"); return 1; } memcpy(first, second, MD_SB_BYTES + sizeof(struct bitmap_super_s)); @@ -997,7 +998,7 @@ static int load_super0(struct supertype *st, int fd, char *devname) if (posix_memalign((void**)&super, 4096, MD_SB_BYTES + ROUND_UP(sizeof(bitmap_super_t), 4096)) != 0) { - pr_err("%s could not allocate superblock\n", __func__); + pr_err("could not allocate superblock\n"); return 1; } @@ -1155,16 +1156,16 @@ static int add_internal_bitmap0(struct supertype *st, int *chunkp, return 1; } -static void locate_bitmap0(struct supertype *st, int fd) +static int locate_bitmap0(struct supertype *st, int fd) { unsigned long long dsize; unsigned long long offset; if (!get_dev_size(fd, NULL, &dsize)) - return; + return -1; if (dsize < MD_RESERVED_SECTORS*512) - return; + return -1; offset = MD_NEW_SIZE_SECTORS(dsize>>9); @@ -1173,9 +1174,10 @@ static void locate_bitmap0(struct supertype *st, int fd) offset += MD_SB_BYTES; lseek64(fd, offset, 0); + return 0; } -static int write_bitmap0(struct supertype *st, int fd) +static int write_bitmap0(struct supertype *st, int fd, enum bitmap_update update) { unsigned long long dsize; unsigned long long offset; @@ -1269,8 +1271,7 @@ static int validate_geometry0(struct supertype *st, int level, } if (size >= tbmax * 2ULL*1024*1024*1024) { if (verbose) - pr_err("0.90 metadata supports at most " - "%d terabytes per device\n", tbmax); + pr_err("0.90 metadata supports at most %d terabytes per device\n", tbmax); return 0; } if (*chunk == UnSet) |