t_stripealign: Fix fibmap error handling
authorCarlos Maiolino <cmaiolino@redhat.com>
Fri, 23 Aug 2019 09:25:30 +0000 (11:25 +0200)
committerEryu Guan <guaneryu@gmail.com>
Sat, 24 Aug 2019 15:24:21 +0000 (23:24 +0800)
FIBMAP only returns a negative value when the underlying filesystem
does not support FIBMAP or on permission error. For the remaining
errors, i.e. those usually returned from the filesystem itself, zero
will be returned.

We can not trust a zero return from the FIBMAP, and such behavior
made generic/223 succeed when it should not.

Also, we can't use perror() only to print errors when FIBMAP failed,
or it will simply print 'success' when a zero is returned.

Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
src/t_stripealign.c

index 5cdadaaee09c96a9829ecdd5556d9ef716b08b92..00a5a3d17a70cc1c2edd16b0c34bd9b0edb74403 100644 (file)
@@ -76,8 +76,11 @@ int main(int argc, char ** argv)
                unsigned int    bmap = 0;
 
                ret = ioctl(fd, FIBMAP, &bmap);
-               if (ret < 0) {
-                       perror("fibmap");
+               if (ret <= 0) {
+                       if (ret < 0)
+                               perror("fibmap");
+                       else
+                               fprintf(stderr, "fibmap returned no result\n");
                        free(fie);
                        close(fd);
                        return 1;