From patchwork Fri Dec 15 14:10:30 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roman Yeryomin X-Patchwork-Id: 849180 X-Patchwork-Delegate: blogic@openwrt.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=65.50.211.133; helo=bombadil.infradead.org; envelope-from=lede-dev-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="mU1u7eUT"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yysnC702Vz9t1t for ; Sat, 16 Dec 2017 01:11:59 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:Subject:Message-Id:Date:To: From:Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=yqxNTRSx9ydhxksB2qVgrLZdB7mIVVxuPPw6S1htZs4=; b=mU1u7eUTtfH9G/ n189D/+W2BK3Hbnh83DuXXBdK0YMSA8b3Z7bGAJ/kJViXvBJyaTkurdAj6SkTrX+pc0f0eUreV9/J S9pzu1LgYeEkXRNDSnVVz29hjT4i/ZVUNJV3TzB+EHWffoKtqPJY61MaPdClq4txOBqewttublab+ aYnEpQuM/Xhfc+fy6eyQjcm2MOtc7t2M2EjV5nbn2hmJrVGM290mB90I4ueBP3GpzYczEpVZ1FyWE hvvlW6w1dEG81IldCsuQQogSj7mvTx/bZ3Fuz2I4Z8VgGU5ug692bdWHm+LTWpcuznDMmjpcjGfbc 3yajh1rrxA6m/fPNlzlA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1ePqi9-000297-5L; Fri, 15 Dec 2017 14:11:37 +0000 Received: from [213.175.92.62] (helo=mail.pbx.lv) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1ePqi4-000212-JB for lede-dev@lists.infradead.org; Fri, 15 Dec 2017 14:11:35 +0000 Received: from localhost.localdomain (unknown [213.175.92.61]) by mail.pbx.lv (MailSystem) with ESMTPSA id 282501A1EAD for ; Fri, 15 Dec 2017 16:11:03 +0200 (EET) From: Roman Yeryomin To: LEDE Development List Date: Fri, 15 Dec 2017 16:10:30 +0200 Message-Id: <20171215141030.5481-1-roman@advem.lv> X-Mailer: git-send-email 2.14.1 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20171215_061132_821600_554E8615 X-CRM114-Status: UNSURE ( 5.58 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -1.1 (-) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-1.1 points) pts rule name description ---- ---------------------- -------------------------------------------------- -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 0.8 RDNS_NONE Delivered to internal network by a host with no rDNS Subject: [LEDE-DEV] [PATCH fstools] overlay: fix race condition when switching to jffs2 X-BeenThere: lede-dev@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "Lede-dev" Errors-To: lede-dev-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org There is a race between `cp -a /tmp/root/* /rom/overlay` from libfstools/overlay.c and a process creating new file(s) before pivot(/rom, /mnt) occured. That is a process can create a file and it will not be copied. To workaround this, do additional copy after jffs2 is ready. This doesn't completely solve the problem but since there was no other fix provided since original RFC [1], it is better than nothiing. [1] https://www.mail-archive.com/openwrt-devel@lists.openwrt.org/msg38218.html Signed-off-by: Roman Yeryomin --- libfstools/overlay.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libfstools/overlay.c b/libfstools/overlay.c index 7ada5ff..8423a57 100644 --- a/libfstools/overlay.c +++ b/libfstools/overlay.c @@ -243,6 +243,10 @@ jffs2_switch(struct volume *v) ULOG_INFO("performing overlay whiteout\n"); umount2("/tmp/root", MNT_DETACH); foreachdir("/overlay/", handle_whiteout); + + /* try hard to be in sync */ + ULOG_INFO("syncronizing overlay\n"); + system("cp -a /tmp/root/upper/* / 2>/dev/null"); break; case FS_EXT4: