btrfs-progs: Simplify all-subvolumn-clean condition for wait_for_subvolume_cleaning
authorZhao Lei <zhaolei@cn.fujitsu.com>
Wed, 26 Aug 2015 14:03:39 +0000 (22:03 +0800)
committerDavid Sterba <dsterba@suse.com>
Tue, 1 Sep 2015 12:02:49 +0000 (14:02 +0200)
Instead of using a dirty-subvolumn-counter in old code, this patch
turn to use a simple and direct way:
  If (not dirty-subvolumn found in current loop) {
      return all_clean;
  }

Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
cmds-subvolume.c

index b4785da..82173c0 100644 (file)
@@ -67,11 +67,11 @@ static int wait_for_subvolume_cleaning(int fd, int count, u64 *ids,
                int sleep_interval)
 {
        int ret;
-       int remaining;
        int i;
 
-       remaining = count;
        while (1) {
+               int clean = 1;
+
                for (i = 0; i < count; i++) {
                        if (!ids[i])
                                continue;
@@ -80,22 +80,21 @@ static int wait_for_subvolume_cleaning(int fd, int count, u64 *ids,
                                fprintf(stderr,
                                        "ERROR: can't perform the search - %s\n",
                                        strerror(-ret));
-                               goto out;
+                               return ret;
                        }
                        if (ret) {
                                printf("Subvolume id %llu is gone\n", ids[i]);
                                ids[i] = 0;
-                               remaining--;
+                       } else {
+                               clean = 0;
                        }
                }
-               if (!remaining)
+               if (clean == 0)
                        break;
                sleep(sleep_interval);
        }
 
-       ret = 0;
-out:
-       return ret;
+       return 0;
 }
 
 static const char * const subvolume_cmd_group_usage[] = {