Minor cosmetic fixes in various files.
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
e999152898
commit
ca3b669603
9
Create.c
9
Create.c
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* mdadm - manage Linux "md" devices aka RAID arrays.
|
||||
*
|
||||
* Copyright (C) 2001-2009 Neil Brown <neilb@suse.de>
|
||||
* Copyright (C) 2001-2012 Neil Brown <neilb@suse.de>
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -22,7 +22,7 @@
|
|||
* Email: <neilb@suse.de>
|
||||
*/
|
||||
|
||||
#include "mdadm.h"
|
||||
#include "mdadm.h"
|
||||
#include "md_u.h"
|
||||
#include "md_p.h"
|
||||
#include <ctype.h>
|
||||
|
@ -61,7 +61,6 @@ static int default_layout(struct supertype *st, int level, int verbose)
|
|||
return layout;
|
||||
}
|
||||
|
||||
|
||||
int Create(struct supertype *st, char *mddev,
|
||||
char *name, int *uuid,
|
||||
int subdevs, struct mddev_dev *devlist,
|
||||
|
@ -198,7 +197,6 @@ int Create(struct supertype *st, char *mddev,
|
|||
|
||||
/* now set some defaults */
|
||||
|
||||
|
||||
if (s->layout == UnSet) {
|
||||
do_default_layout = 1;
|
||||
s->layout = default_layout(st, s->level, c->verbose);
|
||||
|
@ -699,7 +697,7 @@ int Create(struct supertype *st, char *mddev,
|
|||
mdi = sysfs_read(-1, dnum, GET_VERSION);
|
||||
|
||||
pr_err("Creating array inside "
|
||||
"%s container %s\n",
|
||||
"%s container %s\n",
|
||||
mdi?mdi->text_version:"managed", path);
|
||||
sysfs_free(mdi);
|
||||
} else
|
||||
|
@ -738,7 +736,6 @@ int Create(struct supertype *st, char *mddev,
|
|||
s->bitmap_file = NULL;
|
||||
}
|
||||
|
||||
|
||||
sysfs_init(&info, mdfd, 0);
|
||||
|
||||
if (st->ss->external && st->container_dev != NoMdDev) {
|
||||
|
|
28
Detail.c
28
Detail.c
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* mdadm - manage Linux "md" devices aka RAID arrays.
|
||||
*
|
||||
* Copyright (C) 2001-2009 Neil Brown <neilb@suse.de>
|
||||
* Copyright (C) 2001-2012 Neil Brown <neilb@suse.de>
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -197,7 +197,7 @@ int Detail(char *dev, struct context *c)
|
|||
printf("MD_METADATA=%d.%d\n",
|
||||
array.major_version, array.minor_version);
|
||||
}
|
||||
|
||||
|
||||
if (st && st->sb && info) {
|
||||
char nbuf[64];
|
||||
struct map_ent *mp, *map = NULL;
|
||||
|
@ -227,14 +227,14 @@ int Detail(char *dev, struct context *c)
|
|||
}
|
||||
|
||||
disks = xmalloc(max_disks * sizeof(mdu_disk_info_t));
|
||||
for (d=0; d<max_disks; d++) {
|
||||
for (d = 0; d < max_disks; d++) {
|
||||
disks[d].state = (1<<MD_DISK_REMOVED);
|
||||
disks[d].major = disks[d].minor = 0;
|
||||
disks[d].number = disks[d].raid_disk = d;
|
||||
}
|
||||
|
||||
next = array.raid_disks;
|
||||
for (d=0; d < max_disks; d++) {
|
||||
for (d = 0; d < max_disks; d++) {
|
||||
mdu_disk_info_t disk;
|
||||
disk.number = d;
|
||||
if (ioctl(fd, GET_DISK_INFO, &disk) < 0) {
|
||||
|
@ -325,7 +325,8 @@ int Detail(char *dev, struct context *c)
|
|||
str = "container";
|
||||
printf(" Raid Level : %s\n", str?str:"-unknown-");
|
||||
if (larray_size)
|
||||
printf(" Array Size : %llu%s\n", (larray_size>>10), human_size(larray_size));
|
||||
printf(" Array Size : %llu%s\n", (larray_size>>10),
|
||||
human_size(larray_size));
|
||||
if (array.level >= 1) {
|
||||
if (array.major_version != 0 &&
|
||||
(larray_size >= 0xFFFFFFFFULL|| array.size == 0)) {
|
||||
|
@ -343,7 +344,7 @@ int Detail(char *dev, struct context *c)
|
|||
if (array.raid_disks)
|
||||
printf(" Raid Devices : %d\n", array.raid_disks);
|
||||
printf(" Total Devices : %d\n", array.nr_disks);
|
||||
if (!container &&
|
||||
if (!container &&
|
||||
((sra == NULL && array.major_version == 0) ||
|
||||
(sra && sra->array.major_version == 0)))
|
||||
printf("Preferred Minor : %d\n", array.md_minor);
|
||||
|
@ -363,7 +364,9 @@ int Detail(char *dev, struct context *c)
|
|||
if (atime)
|
||||
printf(" Update Time : %.24s\n", ctime(&atime));
|
||||
if (array.raid_disks) {
|
||||
static char *sync_action[] = {", recovering",", resyncing",", reshaping",", checking"};
|
||||
static char *sync_action[] = {
|
||||
", recovering", ", resyncing",
|
||||
", reshaping", ", checking" };
|
||||
char *st;
|
||||
if (avail_disks == array.raid_disks)
|
||||
st = "";
|
||||
|
@ -419,7 +422,9 @@ int Detail(char *dev, struct context *c)
|
|||
}
|
||||
|
||||
if (e && e->percent >= 0) {
|
||||
static char *sync_action[] = {"Rebuild", "Resync", "Reshape", "Check"};
|
||||
static char *sync_action[] = {
|
||||
"Rebuild", "Resync",
|
||||
"Reshape", "Check"};
|
||||
printf(" %7s Status : %d%% complete\n", sync_action[e->resync], e->percent);
|
||||
is_rebuilding = 1;
|
||||
}
|
||||
|
@ -433,7 +438,9 @@ This is pretty boring
|
|||
#endif
|
||||
if (info->delta_disks != 0)
|
||||
printf(" Delta Devices : %d, (%d->%d)\n",
|
||||
info->delta_disks, array.raid_disks - info->delta_disks, array.raid_disks);
|
||||
info->delta_disks,
|
||||
array.raid_disks - info->delta_disks,
|
||||
array.raid_disks);
|
||||
if (info->new_level != array.level) {
|
||||
str = map_num(pers, info->new_level);
|
||||
printf(" New Level : %s\n", str?str:"-unknown-");
|
||||
|
@ -572,7 +579,8 @@ This is pretty boring
|
|||
if (c->test && d < array.raid_disks
|
||||
&& !(disk.state & (1<<MD_DISK_SYNC)))
|
||||
rv |= 1;
|
||||
if ((dv=map_dev_preferred(disk.major, disk.minor, 0, c->prefer))) {
|
||||
dv=map_dev_preferred(disk.major, disk.minor, 0, c->prefer);
|
||||
if (dv != NULL) {
|
||||
if (c->brief) {
|
||||
if (devices) {
|
||||
devices = xrealloc(devices,
|
||||
|
|
17
Examine.c
17
Examine.c
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* mdadm - manage Linux "md" devices aka RAID arrays.
|
||||
*
|
||||
* Copyright (C) 2001-2009 Neil Brown <neilb@suse.de>
|
||||
* Copyright (C) 2001-2012 Neil Brown <neilb@suse.de>
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -47,7 +47,8 @@ int Examine(struct mddev_dev *devlist,
|
|||
*
|
||||
* utime, state etc
|
||||
*
|
||||
* If (brief) gather devices for same array and just print a mdadm.conf line including devices=
|
||||
* If (brief) gather devices for same array and just print a mdadm.conf
|
||||
* line including devices=
|
||||
* if devlist==NULL, use conf_get_devs()
|
||||
*/
|
||||
int fd;
|
||||
|
@ -62,7 +63,7 @@ int Examine(struct mddev_dev *devlist,
|
|||
int spares;
|
||||
} *arrays = NULL;
|
||||
|
||||
for (; devlist ; devlist=devlist->next) {
|
||||
for (; devlist ; devlist = devlist->next) {
|
||||
struct supertype *st;
|
||||
int have_container = 0;
|
||||
|
||||
|
@ -124,9 +125,9 @@ int Examine(struct mddev_dev *devlist,
|
|||
} else if (c->brief) {
|
||||
struct array *ap;
|
||||
char *d;
|
||||
for (ap=arrays; ap; ap=ap->next) {
|
||||
for (ap = arrays; ap; ap = ap->next) {
|
||||
if (st->ss == ap->st->ss &&
|
||||
st->ss->compare_super(ap->st, st)==0)
|
||||
st->ss->compare_super(ap->st, st) == 0)
|
||||
break;
|
||||
}
|
||||
if (!ap) {
|
||||
|
@ -156,7 +157,7 @@ int Examine(struct mddev_dev *devlist,
|
|||
}
|
||||
if (c->brief) {
|
||||
struct array *ap;
|
||||
for (ap=arrays; ap; ap=ap->next) {
|
||||
for (ap = arrays; ap; ap = ap->next) {
|
||||
char sep='=';
|
||||
char *d;
|
||||
int newline = 0;
|
||||
|
@ -166,7 +167,9 @@ int Examine(struct mddev_dev *devlist,
|
|||
newline += printf(" spares=%d", ap->spares);
|
||||
if (c->verbose > 0) {
|
||||
newline += printf(" devices");
|
||||
for (d=dl_next(ap->devs); d!= ap->devs; d=dl_next(d)) {
|
||||
for (d = dl_next(ap->devs);
|
||||
d != ap->devs;
|
||||
d=dl_next(d)) {
|
||||
printf("%c%s", sep, d);
|
||||
sep=',';
|
||||
}
|
||||
|
|
43
Grow.c
43
Grow.c
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* mdadm - manage Linux "md" devices aka RAID arrays.
|
||||
*
|
||||
* Copyright (C) 2001-2009 Neil Brown <neilb@suse.de>
|
||||
* Copyright (C) 2001-2012 Neil Brown <neilb@suse.de>
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -122,7 +122,8 @@ int Grow_Add_device(char *devname, int fd, char *newdev)
|
|||
|
||||
st = super_by_fd(fd, &subarray);
|
||||
if (!st) {
|
||||
pr_err("cannot handle arrays with superblock version %d\n", info.array.major_version);
|
||||
pr_err("cannot handle arrays with superblock version %d\n",
|
||||
info.array.major_version);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -146,7 +147,8 @@ int Grow_Add_device(char *devname, int fd, char *newdev)
|
|||
free(st);
|
||||
return 1;
|
||||
}
|
||||
/* now check out all the devices and make sure we can read the superblock */
|
||||
/* now check out all the devices and make sure we can read the
|
||||
* superblock */
|
||||
for (d=0 ; d < info.array.raid_disks ; d++) {
|
||||
mdu_disk_info_t disk;
|
||||
char *dv;
|
||||
|
@ -408,8 +410,8 @@ int Grow_addbitmap(char *devname, int fd, struct context *c, struct shape *s)
|
|||
)
|
||||
st->ss->write_bitmap(st, fd2);
|
||||
else {
|
||||
pr_err("failed "
|
||||
"to create internal bitmap - chunksize problem.\n");
|
||||
pr_err("failed to create internal bitmap"
|
||||
" - chunksize problem.\n");
|
||||
close(fd2);
|
||||
return 1;
|
||||
}
|
||||
|
@ -440,7 +442,7 @@ int Grow_addbitmap(char *devname, int fd, struct context *c, struct shape *s)
|
|||
int max_devs = st->max_devs;
|
||||
|
||||
/* try to load a superblock */
|
||||
for (d=0; d<max_devs; d++) {
|
||||
for (d = 0; d < max_devs; d++) {
|
||||
mdu_disk_info_t disk;
|
||||
char *dv;
|
||||
int fd2;
|
||||
|
@ -451,7 +453,8 @@ int Grow_addbitmap(char *devname, int fd, struct context *c, struct shape *s)
|
|||
(disk.state & (1<<MD_DISK_REMOVED)))
|
||||
continue;
|
||||
dv = map_dev(disk.major, disk.minor, 1);
|
||||
if (!dv) continue;
|
||||
if (!dv)
|
||||
continue;
|
||||
fd2 = dev_open(dv, O_RDONLY);
|
||||
if (fd2 >= 0) {
|
||||
if (st->ss->load_super(st, fd2, NULL) == 0) {
|
||||
|
@ -520,7 +523,7 @@ static __u32 bsb_csum(char *buf, int len)
|
|||
{
|
||||
int i;
|
||||
int csum = 0;
|
||||
for (i=0; i<len; i++)
|
||||
for (i = 0; i < len; i++)
|
||||
csum = (csum<<3) + buf[0];
|
||||
return __cpu_to_le32(csum);
|
||||
}
|
||||
|
@ -1250,9 +1253,11 @@ char *analyse_change(struct mdinfo *info, struct reshape *re)
|
|||
|
||||
switch (re->level) {
|
||||
case 4:
|
||||
re->after.layout = 0 ; break;
|
||||
re->after.layout = 0;
|
||||
break;
|
||||
case 5:
|
||||
re->after.layout = ALGORITHM_PARITY_N; break;
|
||||
re->after.layout = ALGORITHM_PARITY_N;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1263,9 +1268,11 @@ char *analyse_change(struct mdinfo *info, struct reshape *re)
|
|||
|
||||
switch (re->level) {
|
||||
case 4:
|
||||
re->after.layout = 0 ; break;
|
||||
re->after.layout = 0;
|
||||
break;
|
||||
case 5:
|
||||
re->after.layout = ALGORITHM_PARITY_N; break;
|
||||
re->after.layout = ALGORITHM_PARITY_N;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1337,10 +1344,13 @@ char *analyse_change(struct mdinfo *info, struct reshape *re)
|
|||
+ info->delta_disks
|
||||
- delta_parity);
|
||||
switch (re->level) {
|
||||
case 6: re->parity = 2; break;
|
||||
case 6: re->parity = 2;
|
||||
break;
|
||||
case 4:
|
||||
case 5: re->parity = 1; break;
|
||||
default: re->parity = 0; break;
|
||||
case 5: re->parity = 1;
|
||||
break;
|
||||
default: re->parity = 0;
|
||||
break;
|
||||
}
|
||||
/* So we have a restripe operation, we need to calculate the number
|
||||
* of blocks per reshape operation.
|
||||
|
@ -3888,7 +3898,8 @@ int Grow_restart(struct supertype *st, struct mdinfo *info, int *fdlist, int cnt
|
|||
}
|
||||
}
|
||||
for (j=0; j<info->array.raid_disks; j++) {
|
||||
if (fdlist[j] < 0) continue;
|
||||
if (fdlist[j] < 0)
|
||||
continue;
|
||||
if (st->ss->load_super(st, fdlist[j], NULL))
|
||||
continue;
|
||||
st->ss->getinfo_super(st, &dinfo, NULL);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Incremental.c - support --incremental. Part of:
|
||||
* mdadm - manage Linux "md" devices aka RAID arrays.
|
||||
*
|
||||
* Copyright (C) 2006-2009 Neil Brown <neilb@suse.de>
|
||||
* Copyright (C) 2006-2012 Neil Brown <neilb@suse.de>
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -227,7 +227,6 @@ int Incremental(char *devname, struct context *c,
|
|||
else
|
||||
trustworthy = FOREIGN;
|
||||
|
||||
|
||||
if (!match && !conf_test_metadata(st->ss->name, policy,
|
||||
(trustworthy == LOCAL))) {
|
||||
if (c->verbose >= 1)
|
||||
|
@ -307,7 +306,7 @@ int Incremental(char *devname, struct context *c,
|
|||
}
|
||||
sra = sysfs_read(mdfd, -1, (GET_DEVS | GET_STATE |
|
||||
GET_OFFSET | GET_SIZE));
|
||||
|
||||
|
||||
if (!sra || !sra->devs || sra->devs->disk.raid_disk >= 0) {
|
||||
/* It really should be 'none' - must be old buggy
|
||||
* kernel, and mdadm -I may not be able to complete.
|
||||
|
@ -337,7 +336,7 @@ int Incremental(char *devname, struct context *c,
|
|||
|
||||
sra = sysfs_read(mdfd, -1, (GET_DEVS | GET_STATE |
|
||||
GET_OFFSET | GET_SIZE));
|
||||
|
||||
|
||||
if (mp->path)
|
||||
strcpy(chosen_name, mp->path);
|
||||
else
|
||||
|
@ -424,7 +423,7 @@ int Incremental(char *devname, struct context *c,
|
|||
info.array.working_disks = 0;
|
||||
for (d = sra->devs; d; d=d->next)
|
||||
info.array.working_disks ++;
|
||||
|
||||
|
||||
}
|
||||
|
||||
/* 7/ Is there enough devices to possibly start the array? */
|
||||
|
@ -436,7 +435,7 @@ int Incremental(char *devname, struct context *c,
|
|||
if (c->verbose >= 0)
|
||||
pr_err("container %s now has %d device%s\n",
|
||||
chosen_name, info.array.working_disks,
|
||||
info.array.working_disks==1?"":"s");
|
||||
info.array.working_disks == 1?"":"s");
|
||||
wait_for(chosen_name, mdfd);
|
||||
if (st->ss->external)
|
||||
devnum = fd2devnum(mdfd);
|
||||
|
@ -632,7 +631,7 @@ static int count_active(struct supertype *st, struct mdinfo *sra,
|
|||
|
||||
for (d = sra->devs ; d ; d = d->next)
|
||||
numdevs++;
|
||||
for (d = sra->devs, devnum=0 ; d ; d = d->next, devnum++) {
|
||||
for (d = sra->devs, devnum = 0 ; d ; d = d->next, devnum++) {
|
||||
char dn[30];
|
||||
int dfd;
|
||||
int ok;
|
||||
|
@ -680,7 +679,7 @@ static int count_active(struct supertype *st, struct mdinfo *sra,
|
|||
else if (info.events == max_events+1) {
|
||||
int i;
|
||||
max_events = info.events;
|
||||
for (i=0; i < raid_disks; i++)
|
||||
for (i = 0; i < raid_disks; i++)
|
||||
if (avail[i])
|
||||
avail[i]--;
|
||||
avail[info.disk.raid_disk] = 2;
|
||||
|
@ -824,7 +823,7 @@ static int array_try_spare(char *devname, int *dfdp, struct dev_policy *pol,
|
|||
if (st == NULL) {
|
||||
int i;
|
||||
st2 = NULL;
|
||||
for(i=0; !st2 && superlist[i]; i++)
|
||||
for(i = 0; !st2 && superlist[i]; i++)
|
||||
st2 = superlist[i]->match_metadata_desc(
|
||||
sra->text_version);
|
||||
if (!st2) {
|
||||
|
@ -1314,7 +1313,7 @@ static char *container2devname(char *devname)
|
|||
} else {
|
||||
int uuid[4];
|
||||
struct map_ent *mp, *map = NULL;
|
||||
|
||||
|
||||
if (!parse_uuid(devname, uuid))
|
||||
return mdname;
|
||||
mp = map_by_uuid(&map, uuid);
|
||||
|
|
3
bitmap.c
3
bitmap.c
|
@ -97,7 +97,7 @@ int count_dirty_bits(char *buf, int num_bits)
|
|||
{
|
||||
int i, num = 0;
|
||||
|
||||
for (i=0; i < num_bits / 8; i++)
|
||||
for (i = 0; i < num_bits / 8; i++)
|
||||
num += count_dirty_bits_byte(buf[i], 8);
|
||||
|
||||
if (num_bits % 8) /* not an even byte boundary */
|
||||
|
@ -121,7 +121,6 @@ unsigned long bitmap_sectors(struct bitmap_super_s *bsb)
|
|||
return (bits + bits_per_sector - 1) / bits_per_sector;
|
||||
}
|
||||
|
||||
|
||||
bitmap_info_t *bitmap_fd_read(int fd, int brief)
|
||||
{
|
||||
/* Note: fd might be open O_DIRECT, so we must be
|
||||
|
|
24
mdopen.c
24
mdopen.c
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* mdadm - manage Linux "md" devices aka RAID arrays.
|
||||
*
|
||||
* Copyright (C) 2001-2009 Neil Brown <neilb@suse.de>
|
||||
* Copyright (C) 2001-2012 Neil Brown <neilb@suse.de>
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -26,7 +26,6 @@
|
|||
#include "md_p.h"
|
||||
#include <ctype.h>
|
||||
|
||||
|
||||
void make_parts(char *dev, int cnt)
|
||||
{
|
||||
/* make 'cnt' partition devices for 'dev'
|
||||
|
@ -49,7 +48,8 @@ void make_parts(char *dev, int cnt)
|
|||
char sym[1024];
|
||||
int err;
|
||||
|
||||
if (cnt==0) cnt=4;
|
||||
if (cnt == 0)
|
||||
cnt = 4;
|
||||
if (lstat(dev, &stb)!= 0)
|
||||
return;
|
||||
|
||||
|
@ -68,10 +68,10 @@ void make_parts(char *dev, int cnt)
|
|||
} else
|
||||
return;
|
||||
name = xmalloc(nlen);
|
||||
for (i=1; i <= cnt ; i++) {
|
||||
for (i = 1; i <= cnt ; i++) {
|
||||
struct stat stb2;
|
||||
snprintf(name, nlen, "%s%s%d", dev, dig?"p":"", i);
|
||||
if (stat(name, &stb2)==0) {
|
||||
if (stat(name, &stb2) == 0) {
|
||||
if (!S_ISBLK(stb2.st_mode) || !S_ISBLK(stb.st_mode))
|
||||
continue;
|
||||
if (stb2.st_rdev == makedev(major_num, minor_num+i))
|
||||
|
@ -100,7 +100,6 @@ void make_parts(char *dev, int cnt)
|
|||
free(name);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* We need a new md device to assemble/build/create an array.
|
||||
* 'dev' is a name given us by the user (command line or mdadm.conf)
|
||||
|
@ -125,7 +124,7 @@ void make_parts(char *dev, int cnt)
|
|||
* supported by 'dev', we add a "_%d" suffix based on the minor number
|
||||
* use that.
|
||||
*
|
||||
* If udev is configured, we create a temporary device, open it, and
|
||||
* If udev is configured, we create a temporary device, open it, and
|
||||
* unlink it.
|
||||
* If not, we create the /dev/mdXX device, and is name is usable,
|
||||
* /dev/md/name
|
||||
|
@ -150,7 +149,6 @@ int create_mddev(char *dev, char *name, int autof, int trustworthy,
|
|||
if (chosen == NULL)
|
||||
chosen = cbuf;
|
||||
|
||||
|
||||
if (autof == 0)
|
||||
autof = ci->autof;
|
||||
|
||||
|
@ -160,7 +158,6 @@ int create_mddev(char *dev, char *name, int autof, int trustworthy,
|
|||
strcpy(chosen, "/dev/md/");
|
||||
cname = chosen + strlen(chosen);
|
||||
|
||||
|
||||
if (dev) {
|
||||
if (strncmp(dev, "/dev/md/", 8) == 0) {
|
||||
strcpy(cname, dev+8);
|
||||
|
@ -238,7 +235,7 @@ int create_mddev(char *dev, char *name, int autof, int trustworthy,
|
|||
use_mdp = 0;
|
||||
}
|
||||
if (num < 0 && trustworthy == LOCAL && name) {
|
||||
/* if name is numeric, possibly prefixed by
|
||||
/* if name is numeric, possibly prefixed by
|
||||
* 'md' or '/dev/md', use that for num
|
||||
* if it is not already in use */
|
||||
char *ep;
|
||||
|
@ -302,7 +299,7 @@ int create_mddev(char *dev, char *name, int autof, int trustworthy,
|
|||
if (trustworthy == METADATA && !isdigit(cname[cnlen-1]))
|
||||
sprintf(cname+cnlen, "%d", unum);
|
||||
else
|
||||
/* add _%d to FOREIGN array that don't
|
||||
/* add _%d to FOREIGN array that don't
|
||||
* a 'host:' prefix
|
||||
*/
|
||||
sprintf(cname+cnlen, "_%d", unum);
|
||||
|
@ -348,9 +345,9 @@ int create_mddev(char *dev, char *name, int autof, int trustworthy,
|
|||
}
|
||||
if (use_mdp == 1)
|
||||
make_parts(devname, parts);
|
||||
if (strcmp(chosen, devname) != 0) {
|
||||
|
||||
if (mkdir("/dev/md",0700)==0) {
|
||||
if (strcmp(chosen, devname) != 0) {
|
||||
if (mkdir("/dev/md",0700) == 0) {
|
||||
if (chown("/dev/md", ci->uid, ci->gid))
|
||||
perror("chown /dev/md");
|
||||
if (chmod("/dev/md", ci->mode| ((ci->mode>>2) & 0111)))
|
||||
|
@ -388,7 +385,6 @@ int create_mddev(char *dev, char *name, int autof, int trustworthy,
|
|||
return mdfd;
|
||||
}
|
||||
|
||||
|
||||
/* Open this and check that it is an md device.
|
||||
* On success, return filedescriptor.
|
||||
* On failure, return -1 if it doesn't exist,
|
||||
|
|
94
util.c
94
util.c
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* mdadm - manage Linux "md" devices aka RAID arrays.
|
||||
*
|
||||
* Copyright (C) 2001-2009 Neil Brown <neilb@suse.de>
|
||||
* Copyright (C) 2001-2012 Neil Brown <neilb@suse.de>
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -89,15 +89,16 @@ int parse_uuid(char *str, int uuid[4])
|
|||
int hit = 0; /* number of Hex digIT */
|
||||
int i;
|
||||
char c;
|
||||
for (i=0; i<4; i++) uuid[i]=0;
|
||||
for (i = 0; i < 4; i++)
|
||||
uuid[i] = 0;
|
||||
|
||||
while ((c= *str++)) {
|
||||
while ((c = *str++) != 0) {
|
||||
int n;
|
||||
if (c>='0' && c<='9')
|
||||
if (c >= '0' && c <= '9')
|
||||
n = c-'0';
|
||||
else if (c>='a' && c <= 'f')
|
||||
else if (c >= 'a' && c <= 'f')
|
||||
n = 10 + c - 'a';
|
||||
else if (c>='A' && c <= 'F')
|
||||
else if (c >= 'A' && c <= 'F')
|
||||
n = 10 + c - 'A';
|
||||
else if (strchr(":. -", c))
|
||||
continue;
|
||||
|
@ -114,7 +115,6 @@ int parse_uuid(char *str, int uuid[4])
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Get the md version number.
|
||||
* We use the RAID_VERSION ioctl if it is supported
|
||||
|
@ -280,7 +280,7 @@ void remove_partitions(int fd)
|
|||
a.datalen = sizeof(p);
|
||||
a.flags = 0;
|
||||
memset(a.data, 0, a.datalen);
|
||||
for (p.pno=0; p.pno < 16; p.pno++)
|
||||
for (p.pno = 0; p.pno < 16; p.pno++)
|
||||
ioctl(fd, BLKPG, &a);
|
||||
#endif
|
||||
}
|
||||
|
@ -338,11 +338,11 @@ int enough(int level, int raid_disks, int layout, int clean, char *avail)
|
|||
* which actual disks are present.
|
||||
*/
|
||||
copies = (layout&255)* ((layout>>8) & 255);
|
||||
first=0;
|
||||
first = 0;
|
||||
do {
|
||||
/* there must be one of the 'copies' form 'first' */
|
||||
int n = copies;
|
||||
int cnt=0;
|
||||
int cnt = 0;
|
||||
while (n--) {
|
||||
if (avail[first])
|
||||
cnt++;
|
||||
|
@ -389,7 +389,7 @@ int enough_fd(int fd)
|
|||
array.raid_disks <= 0)
|
||||
return 0;
|
||||
avail = xcalloc(array.raid_disks, 1);
|
||||
for (i=0; i < MAX_DISKS && array.nr_disks > 0; i++) {
|
||||
for (i = 0; i < MAX_DISKS && array.nr_disks > 0; i++) {
|
||||
disk.number = i;
|
||||
if (ioctl(fd, GET_DISK_INFO, &disk) != 0)
|
||||
continue;
|
||||
|
@ -411,7 +411,6 @@ int enough_fd(int fd)
|
|||
return rv;
|
||||
}
|
||||
|
||||
|
||||
const int uuid_zero[4] = { 0, 0, 0, 0 };
|
||||
|
||||
int same_uuid(int a[4], int b[4], int swapuuid)
|
||||
|
@ -424,7 +423,7 @@ int same_uuid(int a[4], int b[4], int swapuuid)
|
|||
unsigned char *ac = (unsigned char *)a;
|
||||
unsigned char *bc = (unsigned char *)b;
|
||||
int i;
|
||||
for (i=0; i<16; i+= 4) {
|
||||
for (i = 0; i < 16; i += 4) {
|
||||
if (ac[i+0] != bc[i+3] ||
|
||||
ac[i+1] != bc[i+2] ||
|
||||
ac[i+2] != bc[i+1] ||
|
||||
|
@ -441,6 +440,7 @@ int same_uuid(int a[4], int b[4], int swapuuid)
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void copy_uuid(void *a, int b[4], int swapuuid)
|
||||
{
|
||||
if (swapuuid) {
|
||||
|
@ -451,7 +451,7 @@ void copy_uuid(void *a, int b[4], int swapuuid)
|
|||
unsigned char *ac = (unsigned char *)a;
|
||||
unsigned char *bc = (unsigned char *)b;
|
||||
int i;
|
||||
for (i=0; i<16; i+= 4) {
|
||||
for (i = 0; i < 16; i += 4) {
|
||||
ac[i+0] = bc[i+3];
|
||||
ac[i+1] = bc[i+2];
|
||||
ac[i+2] = bc[i+1];
|
||||
|
@ -537,8 +537,8 @@ int check_reiser(int fd, char *name)
|
|||
return 0;
|
||||
if (read(fd, sb, 1024) != 1024)
|
||||
return 0;
|
||||
if (strncmp((char*)sb+52, "ReIsErFs",8)!=0 &&
|
||||
strncmp((char*)sb+52, "ReIsEr2Fs",9)!=0)
|
||||
if (strncmp((char*)sb+52, "ReIsErFs",8) != 0 &&
|
||||
strncmp((char*)sb+52, "ReIsEr2Fs",9) != 0)
|
||||
return 0;
|
||||
pr_err("%s appears to contain a reiserfs file system\n",name);
|
||||
size = sb[0]|(sb[1]|(sb[2]|sb[3]<<8)<<8)<<8;
|
||||
|
@ -574,7 +574,7 @@ int ask(char *mesg)
|
|||
{
|
||||
char *add = "";
|
||||
int i;
|
||||
for (i=0; i<5; i++) {
|
||||
for (i = 0; i < 5; i++) {
|
||||
char buf[100];
|
||||
fprintf(stderr, "%s%s", mesg, add);
|
||||
fflush(stderr);
|
||||
|
@ -601,18 +601,18 @@ int is_standard(char *dev, int *nump)
|
|||
* 0 if not a standard name.
|
||||
*/
|
||||
char *d = strrchr(dev, '/');
|
||||
int type=0;
|
||||
int type = 0;
|
||||
int num;
|
||||
if (!d)
|
||||
return 0;
|
||||
if (strncmp(d, "/d",2)==0)
|
||||
d += 2, type=1; /* /dev/md/dN{pM} */
|
||||
else if (strncmp(d, "/md_d", 5)==0)
|
||||
d += 5, type=1; /* /dev/md_dN{pM} */
|
||||
else if (strncmp(d, "/md", 3)==0)
|
||||
d += 3, type=-1; /* /dev/mdN */
|
||||
else if (d-dev > 3 && strncmp(d-2, "md/", 3)==0)
|
||||
d += 1, type=-1; /* /dev/md/N */
|
||||
if (strncmp(d, "/d",2) == 0)
|
||||
d += 2, type = 1; /* /dev/md/dN{pM} */
|
||||
else if (strncmp(d, "/md_d", 5) == 0)
|
||||
d += 5, type = 1; /* /dev/md_dN{pM} */
|
||||
else if (strncmp(d, "/md", 3) == 0)
|
||||
d += 3, type = -1; /* /dev/mdN */
|
||||
else if (d-dev > 3 && strncmp(d-2, "md/", 3) == 0)
|
||||
d += 1, type = -1; /* /dev/md/N */
|
||||
else
|
||||
return 0;
|
||||
if (!*d)
|
||||
|
@ -634,13 +634,13 @@ unsigned long calc_csum(void *super, int bytes)
|
|||
unsigned int csum;
|
||||
unsigned int *superc = (unsigned int*) super;
|
||||
|
||||
for(i=0; i<bytes/4; i++)
|
||||
newcsum+= superc[i];
|
||||
for(i = 0; i < bytes/4; i++)
|
||||
newcsum += superc[i];
|
||||
csum = (newcsum& 0xffffffff) + (newcsum>>32);
|
||||
#ifdef __alpha__
|
||||
/* The in-kernel checksum calculation is always 16bit on
|
||||
* the alpha, though it is 32 bit on i386...
|
||||
* I wonder what it is elsewhere... (it uses and API in
|
||||
* I wonder what it is elsewhere... (it uses an API in
|
||||
* a way that it shouldn't).
|
||||
*/
|
||||
csum = (csum & 0xffff) + (csum >> 16);
|
||||
|
@ -664,7 +664,7 @@ char *human_size(long long bytes)
|
|||
*/
|
||||
|
||||
if (bytes < 5000*1024)
|
||||
buf[0]=0;
|
||||
buf[0] = 0;
|
||||
else if (bytes < 2*1024LL*1024LL*1024LL) {
|
||||
long cMiB = (bytes / ( (1LL<<20) / 200LL ) +1) /2;
|
||||
long cMB = (bytes / ( 1000000LL / 200LL ) +1) /2;
|
||||
|
@ -733,11 +733,15 @@ int get_data_disks(int level, int layout, int raid_disks)
|
|||
{
|
||||
int data_disks = 0;
|
||||
switch (level) {
|
||||
case 0: data_disks = raid_disks; break;
|
||||
case 1: data_disks = 1; break;
|
||||
case 0: data_disks = raid_disks;
|
||||
break;
|
||||
case 1: data_disks = 1;
|
||||
break;
|
||||
case 4:
|
||||
case 5: data_disks = raid_disks - 1; break;
|
||||
case 6: data_disks = raid_disks - 2; break;
|
||||
case 5: data_disks = raid_disks - 1;
|
||||
break;
|
||||
case 6: data_disks = raid_disks - 2;
|
||||
break;
|
||||
case 10: data_disks = raid_disks / (layout & 255) / ((layout>>8)&255);
|
||||
break;
|
||||
}
|
||||
|
@ -796,7 +800,7 @@ char *get_md_name(int dev)
|
|||
|
||||
void put_md_name(char *name)
|
||||
{
|
||||
if (strncmp(name, "/dev/.tmp.md", 12)==0)
|
||||
if (strncmp(name, "/dev/.tmp.md", 12) == 0)
|
||||
unlink(name);
|
||||
}
|
||||
|
||||
|
@ -848,7 +852,7 @@ int dev_open(char *dev, int flags)
|
|||
if (fd < 0) {
|
||||
snprintf(devname, sizeof(devname), "/dev/.tmp.md.%d:%d:%d",
|
||||
(int)getpid(), major, minor);
|
||||
if (mknod(devname, S_IFBLK|0600, makedev(major, minor))==0) {
|
||||
if (mknod(devname, S_IFBLK|0600, makedev(major, minor)) == 0) {
|
||||
fd = open(devname, flags);
|
||||
unlink(devname);
|
||||
}
|
||||
|
@ -856,7 +860,7 @@ int dev_open(char *dev, int flags)
|
|||
if (fd < 0) {
|
||||
snprintf(devname, sizeof(devname), "/tmp/.tmp.md.%d:%d:%d",
|
||||
(int)getpid(), major, minor);
|
||||
if (mknod(devname, S_IFBLK|0600, makedev(major, minor))==0) {
|
||||
if (mknod(devname, S_IFBLK|0600, makedev(major, minor)) == 0) {
|
||||
fd = open(devname, flags);
|
||||
unlink(devname);
|
||||
}
|
||||
|
@ -886,7 +890,7 @@ int open_dev_excl(int devnum)
|
|||
int flags = O_RDWR;
|
||||
|
||||
sprintf(buf, "%d:%d", dev2major(devnum), dev2minor(devnum));
|
||||
for (i=0 ; i<25 ; i++) {
|
||||
for (i = 0 ; i < 25 ; i++) {
|
||||
int fd = dev_open(buf, flags|O_EXCL);
|
||||
if (fd >= 0)
|
||||
return fd;
|
||||
|
@ -924,7 +928,7 @@ void wait_for(char *dev, int fd)
|
|||
(stb_want.st_mode & S_IFMT) != S_IFBLK)
|
||||
return;
|
||||
|
||||
for (i=0 ; i<25 ; i++) {
|
||||
for (i = 0 ; i < 25 ; i++) {
|
||||
struct stat stb;
|
||||
if (stat(dev, &stb) == 0 &&
|
||||
(stb.st_mode & S_IFMT) == S_IFBLK &&
|
||||
|
@ -1058,7 +1062,7 @@ struct supertype *guess_super_type(int fd, enum guess_types guess_type)
|
|||
st = xcalloc(1, sizeof(*st));
|
||||
st->container_dev = NoMdDev;
|
||||
|
||||
for (i=0 ; superlist[i]; i++) {
|
||||
for (i = 0 ; superlist[i]; i++) {
|
||||
int rv;
|
||||
ss = superlist[i];
|
||||
if (guess_type == guess_array && ss->add_to_super == NULL)
|
||||
|
@ -1176,7 +1180,7 @@ static int get_gpt_last_partition_end(int fd, unsigned long long *endofpart)
|
|||
|
||||
part = (struct GPT_part_entry *)buf;
|
||||
|
||||
for (part_nr=0; part_nr < all_partitions; part_nr++) {
|
||||
for (part_nr = 0; part_nr < all_partitions; part_nr++) {
|
||||
/* read partition entry */
|
||||
if (read(fd, buf, entry_size) != (ssize_t)entry_size)
|
||||
return 0;
|
||||
|
@ -1220,7 +1224,7 @@ static int get_last_partition_end(int fd, unsigned long long *endofpart)
|
|||
/* found the correct signature */
|
||||
part = boot_sect.parts;
|
||||
|
||||
for (part_nr=0; part_nr < MBR_PARTITIONS; part_nr++) {
|
||||
for (part_nr = 0; part_nr < MBR_PARTITIONS; part_nr++) {
|
||||
/* check for GPT type */
|
||||
if (part->part_type == MBR_GPT_PARTITION_TYPE) {
|
||||
retval = get_gpt_last_partition_end(fd, endofpart);
|
||||
|
@ -1598,7 +1602,7 @@ int start_mdmon(int devnum)
|
|||
{
|
||||
int i, skipped;
|
||||
int len;
|
||||
pid_t pid;
|
||||
pid_t pid;
|
||||
int status;
|
||||
char pathbuf[1024];
|
||||
char *paths[4] = {
|
||||
|
@ -1628,13 +1632,13 @@ int start_mdmon(int devnum)
|
|||
case 0:
|
||||
/* FIXME yuk. CLOSE_EXEC?? */
|
||||
skipped = 0;
|
||||
for (i=3; skipped < 20; i++)
|
||||
for (i = 3; skipped < 20; i++)
|
||||
if (close(i) < 0)
|
||||
skipped++;
|
||||
else
|
||||
skipped = 0;
|
||||
|
||||
for (i=0; paths[i]; i++)
|
||||
for (i = 0; paths[i]; i++)
|
||||
if (paths[i][0]) {
|
||||
if (__offroot) {
|
||||
execl(paths[i], "mdmon", "--offroot",
|
||||
|
|
Loading…
Reference in New Issue