btrfs-progs: fix close of error fd in scrub cancel
authorEric Sandeen <sandeen@redhat.com>
Mon, 25 Feb 2013 22:54:40 +0000 (16:54 -0600)
committerDavid Sterba <dsterba@suse.cz>
Wed, 27 Feb 2013 13:39:37 +0000 (14:39 +0100)
If we retry opening the mountpoint and fail, we'll call
close on a filehandle w/ value -1.  Rearrange so the
retry uses the same open and same error handling.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
cmds-scrub.c

index b984e96..353d9cb 100644 (file)
@@ -1448,13 +1448,13 @@ static int cmd_scrub_cancel(int argc, char **argv)
 
        path = argv[1];
 
+again:
        fdmnt = open_file_or_dir(path);
        if (fdmnt < 0) {
                fprintf(stderr, "ERROR: scrub cancel failed\n");
-               return 12;
+               return 1;
        }
 
-again:
        ret = ioctl(fdmnt, BTRFS_IOC_SCRUB_CANCEL, NULL);
        err = errno;
 
@@ -1463,13 +1463,10 @@ again:
                ret = check_mounted_where(fdmnt, path, mp, sizeof(mp),
                                          &fs_devices_mnt);
                if (ret) {
-                       /* It is a device; open the mountpoint. */
+                       /* It is a device; try again with the mountpoint. */
                        close(fdmnt);
-                       fdmnt = open_file_or_dir(mp);
-                       if (fdmnt >= 0) {
-                               path = mp;
-                               goto again;
-                       }
+                       path = mp;
+                       goto again;
                }
        }