]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Grow.c
Compile with -Wextra by default
[thirdparty/mdadm.git] / Grow.c
diff --git a/Grow.c b/Grow.c
index 06343a0512e7226a98f6dac8c0b1a38eedd7d8ed..78c3d4facba654aa3a676fda5f035a851ed496fb 100644 (file)
--- a/Grow.c
+++ b/Grow.c
@@ -409,7 +409,7 @@ static struct mdp_backup_super {
        __u8 pad[512-68-32];
 } __attribute__((aligned(512))) bsb, bsb2;
 
-int bsb_csum(char *buf, int len)
+__u32 bsb_csum(char *buf, int len)
 {
        int i;
        int csum = 0;
@@ -505,7 +505,7 @@ int Grow_reshape(char *devname, int fd, int quiet, char *backup_file,
        int nchunk, ochunk;
        int nlayout, olayout;
        int ndisks, odisks;
-       int ndata, odata;
+       unsigned int ndata, odata;
        int orig_level = UnSet;
        char alt_layout[40];
        int *fdlist;
@@ -515,7 +515,7 @@ int Grow_reshape(char *devname, int fd, int quiet, char *backup_file,
        int err;
        int frozen;
        unsigned long a,b, blocks, stripes;
-       int cache;
+       unsigned long cache;
        unsigned long long array_size;
        int changed = 0;
        int done;
@@ -923,7 +923,7 @@ int Grow_reshape(char *devname, int fd, int quiet, char *backup_file,
 
                /* Check that we can hold all the data */
                get_dev_size(fd, NULL, &array_size);
-               if (ndata * size < (array_size/1024)) {
+               if (ndata * (unsigned long long)size < (array_size/1024)) {
                        fprintf(stderr, Name ": this change will reduce the size of the array.\n"
                                "       use --grow --array-size first to truncate array.\n"
                                "       e.g. mdadm --grow %s --array-size %llu\n",
@@ -1054,7 +1054,7 @@ int Grow_reshape(char *devname, int fd, int quiet, char *backup_file,
                                break;
                        }
                        memset(buf, 0, 512);
-                       for (i=0; i < blocks + 1 ; i++) {
+                       for (i=0; i < (signed)blocks + 1 ; i++) {
                                if (write(fdlist[d], buf, 512) != 512) {
                                        fprintf(stderr, Name ": %s: cannot create backup file %s: %s\n",
                                                devname, backup_file, strerror(errno));
@@ -1284,7 +1284,8 @@ int grow_backup(struct mdinfo *sra,
        int odata = disks;
        int rv = 0;
        int i;
-       unsigned long long new_degraded;
+       unsigned long long ll;
+       int new_degraded;
        //printf("offset %llu\n", offset);
        if (level >= 4)
                odata--;
@@ -1292,7 +1293,8 @@ int grow_backup(struct mdinfo *sra,
                odata--;
        sysfs_set_num(sra, NULL, "suspend_hi", (offset + stripes * (chunk/512)) * odata);
        /* Check that array hasn't become degraded, else we might backup the wrong data */
-       sysfs_get_ll(sra, NULL, "degraded", &new_degraded);
+       sysfs_get_ll(sra, NULL, "degraded", &ll);
+       new_degraded = (int)ll;
        if (new_degraded != *degraded) {
                /* check each device to ensure it is still working */
                struct mdinfo *sd;
@@ -1348,11 +1350,12 @@ int grow_backup(struct mdinfo *sra,
                        bsb.sb_csum2 = bsb_csum((char*)&bsb,
                                                ((char*)&bsb.sb_csum2)-((char*)&bsb));
 
-               if (lseek64(destfd[i], destoffsets[i] - 4096, 0) != destoffsets[i] - 4096)
+               if ((unsigned long long)lseek64(destfd[i], destoffsets[i] - 4096, 0)
+                   != destoffsets[i] - 4096)
                        rv = 1;
                rv = rv ?: write(destfd[i], &bsb, 512);
                if (destoffsets[i] > 4096) {
-                       if (lseek64(destfd[i], destoffsets[i]+stripes*chunk*odata, 0) !=
+                       if ((unsigned long long)lseek64(destfd[i], destoffsets[i]+stripes*chunk*odata, 0) !=
                            destoffsets[i]+stripes*chunk*odata)
                                rv = 1;
                        rv = rv ?: write(destfd[i], &bsb, 512);
@@ -1426,7 +1429,7 @@ int wait_backup(struct mdinfo *sra,
                if (memcmp(bsb.magic, "md_backup_data-2", 16) == 0)
                        bsb.sb_csum2 = bsb_csum((char*)&bsb,
                                                ((char*)&bsb.sb_csum2)-((char*)&bsb));
-               if (lseek64(destfd[i], destoffsets[i]-4096, 0) !=
+               if ((unsigned long long)lseek64(destfd[i], destoffsets[i]-4096, 0) !=
                    destoffsets[i]-4096)
                        rv = 1;
                rv = rv ?: write(destfd[i], &bsb, 512);
@@ -1444,7 +1447,7 @@ static void fail(char *msg)
 }
 
 static char *abuf, *bbuf;
-static int abuflen;
+static unsigned long long abuflen;
 static void validate(int afd, int bfd, unsigned long long offset)
 {
        /* check that the data in the backup against the array.
@@ -1485,12 +1488,12 @@ static void validate(int afd, int bfd, unsigned long long offset)
                }
 
                lseek64(bfd, offset, 0);
-               if (read(bfd, bbuf, len) != len) {
+               if ((unsigned long long)read(bfd, bbuf, len) != len) {
                        //printf("len %llu\n", len);
                        fail("read first backup failed");
                }
                lseek64(afd, __le64_to_cpu(bsb2.arraystart)*512, 0);
-               if (read(afd, abuf, len) != len)
+               if ((unsigned long long)read(afd, abuf, len) != len)
                        fail("read first from array failed");
                if (memcmp(bbuf, abuf, len) != 0) {
                        #if 0
@@ -1518,10 +1521,10 @@ static void validate(int afd, int bfd, unsigned long long offset)
                }
 
                lseek64(bfd, offset+__le64_to_cpu(bsb2.devstart2)*512, 0);
-               if (read(bfd, bbuf, len) != len)
+               if ((unsigned long long)read(bfd, bbuf, len) != len)
                        fail("read second backup failed");
                lseek64(afd, __le64_to_cpu(bsb2.arraystart2)*512, 0);
-               if (read(afd, abuf, len) != len)
+               if ((unsigned long long)read(afd, abuf, len) != len)
                        fail("read second from array failed");
                if (memcmp(bbuf, abuf, len) != 0)
                        fail("data2 compare failed");
@@ -1763,8 +1766,8 @@ int Grow_restart(struct supertype *st, struct mdinfo *info, int *fdlist, int cnt
                 * sometimes they aren't... So allow considerable flexability in matching, and allow
                 * this test to be overridden by an environment variable.
                 */
-               if (info->array.utime > __le64_to_cpu(bsb.mtime) + 2*60*60 ||
-                   info->array.utime < __le64_to_cpu(bsb.mtime) - 10*60) {
+               if (info->array.utime > (int)__le64_to_cpu(bsb.mtime) + 2*60*60 ||
+                   info->array.utime < (int)__le64_to_cpu(bsb.mtime) - 10*60) {
                        if (check_env("MDADM_GROW_ALLOW_OLD")) {
                                fprintf(stderr, Name ": accepting backup with timestamp %lu "
                                        "for array with timestamp %lu\n",
@@ -1973,7 +1976,7 @@ int Grow_continue(int mdfd, struct supertype *st, struct mdinfo *info,
        int d;
        struct mdinfo *sra, *sd;
        int rv;
-       int cache;
+       unsigned long cache;
        int done = 0;
 
        err = sysfs_set_str(info, NULL, "array_state", "readonly");