]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Manage.c
Compile with -Wextra by default
[thirdparty/mdadm.git] / Manage.c
index 3680d6841c53098121646ccd5fddb578c81e4473..0b3a66ccda3d82273e875d2f97bc2dbfcd996f80 100644 (file)
--- a/Manage.c
+++ b/Manage.c
@@ -156,7 +156,7 @@ static void remove_devices(int devnum, char *path)
                unlink(base);
                if (path) {
                        n = readlink(path2, link, sizeof(link));
-                       if (n && strlen(base) == n &&
+                       if (n && (int)strlen(base) == n &&
                            strncmp(link, base, n) == 0)
                                unlink(path2);
                }
@@ -349,7 +349,7 @@ int Manage_subdevs(char *devname, int fd,
        mddev_dev_t dv, next = NULL;
        struct stat stb;
        int j, jnext = 0;
-       int tfd;
+       int tfd = -1;
        struct supertype *st, *tst;
        int duuid[4];
        int ouuid[4];
@@ -398,7 +398,7 @@ int Manage_subdevs(char *devname, int fd,
                                return 1;
                        }
                        for (; j < array.raid_disks + array.nr_disks ; j++) {
-                               int dev;
+                               unsigned dev;
                                disc.number = j;
                                if (ioctl(fd, GET_DISK_INFO, &disc))
                                        continue;
@@ -430,7 +430,7 @@ int Manage_subdevs(char *devname, int fd,
                        }
                        for (; j < array.raid_disks + array.nr_disks; j++) {
                                int sfd;
-                               int dev;
+                               unsigned dev;
                                disc.number = j;
                                if (ioctl(fd, GET_DISK_INFO, &disc))
                                        continue;
@@ -486,7 +486,7 @@ int Manage_subdevs(char *devname, int fd,
                        char dname[55];
                        if (dv->disposition != 'r' && dv->disposition != 'f') {
                                fprintf(stderr, Name ": %s only meaningful "
-                                       "with -r of -f, not -%c\n",
+                                       "with -r or -f, not -%c\n",
                                        dv->devname, dv->disposition);
                                return 1;
                        }
@@ -532,6 +532,7 @@ int Manage_subdevs(char *devname, int fd,
                                        return 1;
                                }
                                close(tfd);
+                               tfd = -1;
                        }
                        if ((stb.st_mode & S_IFMT) != S_IFBLK) {
                                fprintf(stderr, Name ": %s is not a "
@@ -575,6 +576,7 @@ int Manage_subdevs(char *devname, int fd,
                                }
                        } else if (!get_dev_size(tfd, NULL, &ldsize)) {
                                close(tfd);
+                               tfd = -1;
                                continue;
                        }
 
@@ -582,6 +584,7 @@ int Manage_subdevs(char *devname, int fd,
                            array.major_version == 0 &&
                            md_get_version(fd)%100 < 2) {
                                close(tfd);
+                               tfd = -1;
                                if (ioctl(fd, HOT_ADD_DISK,
                                          (unsigned long)stb.st_rdev)==0) {
                                        if (verbose >= 0)
@@ -639,6 +642,7 @@ int Manage_subdevs(char *devname, int fd,
                                if (tst->ss->avail_size(tst, ldsize/512) <
                                    array_size) {
                                        close(tfd);
+                                       tfd = -1;
                                        if (add_dev != dv->devname)
                                                continue;
                                        fprintf(stderr, Name ": %s not large enough to join array\n",
@@ -689,7 +693,6 @@ int Manage_subdevs(char *devname, int fd,
                                                        continue;
                                                }
                                                if (errno == ENOMEM || errno == EROFS) {
-                                                       close(tfd);
                                                        fprintf(stderr, Name ": add new device failed for %s: %s\n",
                                                                add_dev, strerror(errno));
                                                        if (add_dev != dv->devname)
@@ -704,8 +707,10 @@ int Manage_subdevs(char *devname, int fd,
                                                fprintf(stderr, Name
                                                        ": --re-add for %s to %s is not possible\n",
                                                        add_dev, devname);
-                                       if (tfd >= 0)
+                                       if (tfd >= 0) {
                                                close(tfd);
+                                               tfd = -1;
+                                       }
                                        continue;
                                }
                                if (dv->re_add) {
@@ -723,6 +728,8 @@ int Manage_subdevs(char *devname, int fd,
                                if (ldsize/512 < array_size) {
                                        fprintf(stderr, Name ": %s not large enough to join array\n",
                                                dv->devname);
+                                       if (tfd >= 0)
+                                               close(tfd);
                                        return 1;
                                }
                        }
@@ -730,6 +737,7 @@ int Manage_subdevs(char *devname, int fd,
                        if (tfd >= 0) {
                                remove_partitions(tfd);
                                close(tfd);
+                               tfd = -1;
                        }
                        /* in 2.6.17 and earlier, version-1 superblocks won't
                         * use the number we write, but will choose a free number.
@@ -922,8 +930,8 @@ int Manage_subdevs(char *devname, int fd,
                                        if (sra)
                                                dv = sra->devs;
                                        for ( ; dv ; dv=dv->next)
-                                               if (dv->disk.major == major(stb.st_rdev) &&
-                                                   dv->disk.minor == minor(stb.st_rdev))
+                                               if (dv->disk.major == (int)major(stb.st_rdev) &&
+                                                   dv->disk.minor == (int)minor(stb.st_rdev))
                                                        break;
                                        if (dv)
                                                err = sysfs_set_str(sra, dv,
@@ -1013,7 +1021,7 @@ int Update_subarray(char *dev, char *subarray, char *update, mddev_ident_t ident
 
        memset(st, 0, sizeof(*st));
        if (snprintf(st->subarray, sizeof(st->subarray), "%s", subarray) >=
-           sizeof(st->subarray)) {
+           (signed)sizeof(st->subarray)) {
                if (!quiet)
                        fprintf(stderr,
                                Name ": Input overflow for subarray '%s' > %zu bytes\n",