[OpenWrt-Devel] [RFC] fstools/overlayfs race condition

John Crispin blogic at openwrt.org
Mon Mar 7 08:42:06 EST 2016



On 07/03/2016 14:40, Luiz Angelo Daros de Luca wrote:

> 
> Em seg, 7 de mar de 2016 às 10:10, John Crispin <blogic at openwrt.org
> <mailto:blogic at openwrt.org>> escreveu:
> 
> 
> 
>     On 07/03/2016 14:03, 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.
>     >
>     > Currently I do additional copy after jffs2 is ready, which is kind of
>     > cumbersome (see attached patch), but there are still few potentially
>     > erroneous scenarios:
>     > 1. a process may recreate the file by the time second cp occurs
>     > 2. a process may delete a file (not existing at that moment) and
>     > second cp will copy it again
>     > 3. a process may want to read created file before second cp occurs
>     >
>     > If attached patch is the way to go I will properly submit it.
>     > Otherwise there should be a more fundamental fix but I don't see a way
>     > to fix this properly.
>     >
>     >
> 
>     Hi Roman
> 
>     that race has been there since the day we do overlayfs. i am always
>     surprised that it has not exploded in a big way yet. the only way i see
>     are workarounds such as yours or sending out lots of SIGSTOP and the
>     continues when we copied the files. either way it will be ugly and
>     require protective gear.
> 
>     i'll ponder this and see if we can find a better way
> 
>             John
>     _______________________________________________
>     openwrt-devel mailing list
>     openwrt-devel at lists.openwrt.org <mailto:openwrt-devel at lists.openwrt.org>
>     https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
> 
> -- 
> 


> Maybe fsfreeze can avoid the race condition. (if this works with the
> involved FS)
> http://linux.die.net/man/8/fsfreeze
> https://github.com/karelzak/util-linux/blob/master/sys-utils/fsfreeze.c
>
> Or just temporary remount source fs as ro. It might make some writing
> process unhappy but I'll keep file filesystem state.
>
> My two cents.
>
> Regards,

> Luiz Angelo Daros de Luca
> luizluca at gmail.com <mailto:luizluca at gmail.com>
> 
> 
> 

ok, i'll have a closer look, did not know this ioctl exists

	John
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list