[LEDE-DEV] [PATCH fstools] overlay: fix race condition when switching to jffs2

Hauke Mehrtens hauke at hauke-m.de
Wed Jan 3 12:54:23 PST 2018


On 12/15/2017 03:10 PM, Roman Yeryomin wrote:
> 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 <roman at advem.lv>
> ---
>  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:
> 

This patch causes the following compile problem when compiled with glibc
on x86:

[ 50%] Building C object CMakeFiles/fstools.dir/libfstools/overlay.c.o
/home/hauke/openwrt/lede/build_dir/target-x86_64_glibc/fstools-2018-01-02-11efbf3b/libfstools/overlay.c:
In function 'jffs2_switch':
/home/hauke/openwrt/lede/build_dir/target-x86_64_glibc/fstools-2018-01-02-11efbf3b/libfstools/overlay.c:249:3:
warning: ignoring return value of 'system', declared with attribute
warn_unused_result [-Wunused-result]
   system("cp -a /tmp/root/upper/* / 2>/dev/null");
   ^
/home/hauke/openwrt/lede/build_dir/target-x86_64_glibc/fstools-2018-01-02-11efbf3b/libfstools/overlay.c:
At top level:
cc1: error: unrecognized command line option '-Wno-format-truncation'
[-Werror]
cc1: all warnings being treated as errors
CMakeFiles/fstools.dir/build.make:110: recipe for target
'CMakeFiles/fstools.dir/libfstools/overlay.c.o' failed


Hauke



More information about the Lede-dev mailing list