block: make sure /etc/ exists on the extroot
authorRafał Miłecki <zajec5@gmail.com>
Wed, 17 Dec 2014 19:50:07 +0000 (20:50 +0100)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 6 Jan 2015 10:52:40 +0000 (11:52 +0100)
Otherwise opening .extroot-uuid could fail.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
block.c

diff --git a/block.c b/block.c
index 107ba64d75b3545070a59b284d74c794ce0f0d69..c29017d13794e77fc5483cd621318ce4776ab590 100644 (file)
--- a/block.c
+++ b/block.c
@@ -911,6 +911,10 @@ static int check_extroot(char *path)
                        char tag[64];
                        char uuid[64] = { 0 };
 
+                       snprintf(tag, sizeof(tag), "%s/etc", path);
+                       if (stat(tag, &s))
+                               mkdir_p(tag);
+
                        snprintf(tag, sizeof(tag), "%s/etc/.extroot-uuid", path);
                        if (stat(tag, &s)) {
                                fp = fopen(tag, "w+");