fstools: backport fixes from master branch

The following changes are backported from the master branch

bdcb075 libfstools: fix matching device name
(f038a61 on master)

ef2d438 fstools: use -Wno-format-truncation instead of -Wno-error=format-truncation
(c43ae11 on master)

d361923 build: disable the format-truncation warning error to fix gcc 7 build errors
(a19f2b3 on master)

cddc830 libfstools: silence mkfs.{ext4,f2fs}
(88d48d5 on master)

be5004c libfstools: add basic documentation of mount functions
(92b4c2c on master)

34d36c2 add missing includes
(7d78836 on master)

A previously added hotfix was replaced by a git commit, hence the patch
file is removed and we got instead

45c2a6f libfstools: fix multiple volume_identify usages with the same volume
(633a8d0 on master)

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
Daniel Golle 2017-07-11 23:30:10 +02:00
parent 74d5c3e019
commit 7896d7b814
No known key found for this signature in database
GPG Key ID: DD8D36F0A710502F
2 changed files with 4 additions and 60 deletions

View File

@ -12,10 +12,10 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(LEDE_GIT)/project/fstools.git
PKG_SOURCE_DATE:=2016-12-04
PKG_SOURCE_VERSION:=84b530a732b12cca1cd5ee9ba163b7ead7a83de3
PKG_MIRROR_HASH:=b607138de1adbb7f49e53daebe28ac1352910fa2b29278365edeabafc5b46a91
PKG_RELEASE:=2
PKG_SOURCE_DATE:=2017-06-30
PKG_SOURCE_VERSION:=bdcb075fafdac0bfe3207c23f64acd58432bad86
PKG_MIRROR_HASH:=760a1fdbd379f1191947ac6ba9881a85a9b8c43f4a96d49db18d4654b0c312c4
PKG_RELEASE:=1
CMAKE_INSTALL:=1
PKG_LICENSE:=GPL-2.0

View File

@ -1,56 +0,0 @@
From 633a8d0981fed0c90f6d16ee2257858b04514dc8 Mon Sep 17 00:00:00 2001
From: Pieter Smith <pieter.smith@philips.com>
Date: Wed, 29 Mar 2017 18:21:56 +0200
Subject: [PATCH] libfstools: fix multiple volume_identify usages with the same
volume
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This fixes e.g. factory-flashed startup issue with jffs2 on ubi overlay
Commit ba019965 ("libfstools: accept volume as argument in most calls")
broke startup for factory-flashed jffs2 on ubi systems, causing substantial
slowdown in factory environments.
When starting up with a factory-flashed jffs2 on ubi system, the "rootfs_data"
volume contains a deadcode marker. In the start phase, mount_root then mounts a
tmpfs overlay, and postpones remounting of the jffs2 overlay until the done
phase of the startup.
The refactoring in ba019965 eliminated an unneeded call to volume_find() when
done() called jffs2_switch(). Unfortunately the refactoring did not take into
account that volume_identify() does not function correctly when called twice in
a row on the same struct volume when using an mtd driver.
mtd_volume_identify() uses mtd_volume_load() to open an fd to the mtd device
and reads a potential deadcode marker from the fd. The first time this works,
and FS_DEADCODE is returned.
When volume_identify() is called a second time however, mtd_volume_load()
notices that we already have an open fd, does nothing further and returns 0
without resetting the file offset to 0. mtd_volume_identify() now reads past
the deadcode marker and now returns FS_JFFS2 if the mtd device is a UBIVOLUME.
jffs2_switch() then handles the wrong case, either pulling the root out from
under user-space in Chaos Calmer, or indefinitely sticking to a tmpfs overlay
in later OpenWRT builds.
Signed-off-by: Pieter Smith <pieter.smith@philips.com>
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
--- a/libfstools/mtd.c
+++ b/libfstools/mtd.c
@@ -76,8 +76,10 @@ static int mtd_volume_load(struct mtd_vo
struct mtd_info_user mtdInfo;
struct erase_info_user mtdLockInfo;
- if (p->fd)
+ if (p->fd) {
+ lseek(p->fd, 0, SEEK_SET);
return 0;
+ }
if (!p->chr)
return -1;