b71759ef1e
It is possible that a directory tree is shared between multiple overlay instances as a lower layer. In this case when one instance executes a file residing on the lower layer, the other instance denies a truncate(2) call on this file. This only happens for truncate(2) and not for open(2) with the O_TRUNC flag. Fix this interference and inconsistency by removing the preliminary i_writecount check before copy-up. This means that unlike on normal filesystems truncate(argv[0]) will now succeed. If this ever causes a regression in a real world use case this needs to be revisited. One way to fix this properly would be to keep a correct i_writecount in the overlay inode, but that is difficult due to memory mapping code only dealing with the real file/inode. Signed-off-by: Chengguang Xu <cgxu519@mykernel.net> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
copy_up.c | ||
dir.c | ||
export.c | ||
file.c | ||
inode.c | ||
namei.c | ||
overlayfs.h | ||
ovl_entry.h | ||
readdir.c | ||
super.c | ||
util.c |