btrfs-progs: delete invalid output file when btrfs-image failed
authorGui Hecheng <guihc.fnst@cn.fujitsu.com>
Tue, 24 Jun 2014 03:16:45 +0000 (11:16 +0800)
committerDavid Sterba <dsterba@suse.cz>
Fri, 22 Aug 2014 12:43:10 +0000 (14:43 +0200)
When btrfs-image failed to create an image, the invalid output file
had better be deleted to prevent being used mistakenly in the future.

Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
btrfs-image.c

index 8ad488d..c03a98d 100644 (file)
@@ -2607,10 +2607,20 @@ int main(int argc, char *argv[])
        }
 
 out:
-       if (out == stdout)
+       if (out == stdout) {
                fflush(out);
-       else
+       } else {
                fclose(out);
+               if (ret && create) {
+                       int unlink_ret;
+
+                       unlink_ret = unlink(target);
+                       if (unlink_ret)
+                               fprintf(stderr,
+                                       "unlink output file failed : %s\n",
+                                       strerror(errno));
+               }
+       }
 
        return !!ret;
 }