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 <sand...@redhat.com>
---
 cmds-scrub.c |   13 +++++--------
 1 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/cmds-scrub.c b/cmds-scrub.c
index b984e96..353d9cb 100644
--- a/cmds-scrub.c
+++ b/cmds-scrub.c
@@ -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;
                }
        }
 
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to