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.f...@cn.fujitsu.com>
---
changelog
        v1->v2: use a new local variable to avoid return value overwritten
        v2->v3: fix patch format problem: tailing whitespace
---
 btrfs-image.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/btrfs-image.c b/btrfs-image.c
index 9e5b8b3..1a3e6ca 100644
--- a/btrfs-image.c
+++ b/btrfs-image.c
@@ -2608,8 +2608,18 @@ int main(int argc, char *argv[])
 out:
        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;
 }
-- 
1.8.1.4

--
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