]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Grow: fix recent breakage - lseek return status.
authorNeilBrown <neilb@suse.de>
Wed, 10 Mar 2010 04:21:18 +0000 (15:21 +1100)
committerNeilBrown <neilb@suse.de>
Wed, 10 Mar 2010 04:21:28 +0000 (15:21 +1100)
Recent fix to check lseek64 return status got it badly wrong.
It doesn't return 0 on success!!

Fix it.

Signed-off-by: NeilBrown <neilb@suse.de>
Grow.c

diff --git a/Grow.c b/Grow.c
index 62c67d04fe4881e277c6d3208dd8945e0ff3b922..6264996c2eb76b9978280047a325afced4451238 100644 (file)
--- a/Grow.c
+++ b/Grow.c
@@ -1337,10 +1337,13 @@ int grow_backup(struct mdinfo *sra,
                        bsb.sb_csum2 = bsb_csum((char*)&bsb,
                                                ((char*)&bsb.sb_csum2)-((char*)&bsb));
 
-               rv |= lseek64(destfd[i], destoffsets[i] - 4096, 0);
+               if (lseek64(destfd[i], destoffsets[i] - 4096, 0) != destoffsets[i] - 4096)
+                       rv = 1;
                rv = rv ?: write(destfd[i], &bsb, 512);
                if (destoffsets[i] > 4096) {
-                       rv |= lseek64(destfd[i], destoffsets[i]+stripes*chunk*odata, 0);
+                       if (lseek64(destfd[i], destoffsets[i]+stripes*chunk*odata, 0) !=
+                           destoffsets[i]+stripes*chunk*odata)
+                               rv = 1;
                        rv = rv ?: write(destfd[i], &bsb, 512);
                }
                fsync(destfd[i]);
@@ -1412,7 +1415,9 @@ 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));
-               rv |= lseek64(destfd[i], destoffsets[i]-4096, 0);
+               if (lseek64(destfd[i], destoffsets[i]-4096, 0) !=
+                   destoffsets[i]-4096)
+                       rv = 1;
                rv = rv ?: write(destfd[i], &bsb, 512);
                fsync(destfd[i]);
        }