switch2jffs(struct volume *v)
{
struct stat s;
- int ret;
+ int ret, fd;
if (!stat(SWITCH_JFFS2, &s)) {
ULOG_ERR("jffs2 switch already running\n");
return -1;
}
- creat(SWITCH_JFFS2, 0600);
+ fd = creat(SWITCH_JFFS2, 0600);
+ if (fd == -1) {
+ ULOG_ERR("failed - cannot create jffs2 switch mark: %m\n");
+ return -1;
+ }
+ close(fd);
+
ret = mount(v->blk, OVERLAYDIR, "jffs2", MS_NOATIME, NULL);
unlink(SWITCH_JFFS2);
if (ret) {
ULOG_ERR("failed - mount -t jffs2 %s %s: %m\n", v->blk, OVERLAYDIR);
return -1;
}
+ selinux_restorecon(OVERLAYDIR);
if (mount("none", "/", NULL, MS_NOATIME | MS_REMOUNT, 0)) {
ULOG_ERR("failed - mount -o remount,ro none: %m\n");
foreachdir("/overlay/", handle_whiteout);
/* try hard to be in sync */
- ULOG_INFO("syncronizing overlay\n");
+ ULOG_INFO("synchronizing overlay\n");
if (system("cp -a /tmp/root/upper/* / 2>/dev/null"))
ULOG_ERR("failed to sync jffs2 overlay\n");
break;