st->ss->getinfo_super(st, &info);
if (did_default && verbose >= 0) {
- if (info.text_version[0] == '/') {
+ if (is_subarray(info.text_version)) {
int dnum = devname2devnum(info.text_version+1);
char *path;
int mdp = get_mdp_major();
mdi = sysfs_read(fd, -1, GET_LEVEL|GET_VERSION);
if (mdi &&
mdi->array.level > 0 &&
- mdi->text_version[0] == '/') {
+ is_subarray(mdi->text_version)) {
char *cp;
/* This is mdmon managed. */
} else if (mdi &&
mdi->array.major_version == -1 &&
mdi->array.minor_version == -2 &&
- mdi->text_version[0] != '/') {
+ !is_subarray(mdi->text_version)) {
/* container, possibly mdmon-managed.
* Make sure mdmon isn't opening it, which
* would interfere with the 'stop'
continue;
}
if (mdstat->metadata_version == NULL ||
- strncmp(mdstat->metadata_version, "external:/", 10) != 0 ||
+ strncmp(mdstat->metadata_version, "external:", 9) != 0 ||
+ !is_subarray(mdstat->metadata_version+9) ||
strncmp(mdstat->metadata_version+10, container->devname,
strlen(container->devname)) != 0 ||
mdstat->metadata_version[10+strlen(container->devname)]
return ((a+base-1)/base)*base;
}
+static inline int is_subarray(char *vers)
+{
+ return (*vers == '/');
+}
+
#define LEVEL_MULTIPATH (-4)
#define LEVEL_LINEAR (-1)
#define LEVEL_FAULTY (-5)
sprintf(version, "%d.%d", vers, minor);
verstr = version;
}
- if (minor == -2 && verstr[0] == '/') {
+ if (minor == -2 && is_subarray(verstr)) {
char *dev = verstr+1;
subarray = strchr(dev, '/');
int devnum;