]> git.baikalelectronics.ru Git - kernel.git/commit
ovl: don't copy up opaqueness
authorMiklos Szeredi <mszeredi@redhat.com>
Mon, 8 Aug 2016 13:08:49 +0000 (15:08 +0200)
committerMiklos Szeredi <mszeredi@redhat.com>
Mon, 8 Aug 2016 13:08:49 +0000 (15:08 +0200)
commitb64d3e4ab8c11b150b84ce99be1c88c3301a08e7
tree1c6201ca0ddd0e5cbdd23b1c6ebde73e8dcb0e9b
parentb482605f7939bd4035b2d11a7952dc3da5821c6d
ovl: don't copy up opaqueness

When a copy up of a directory occurs which has the opaque xattr set, the
xattr remains in the upper directory. The immediate behavior with overlayfs
is that the upper directory is not treated as opaque, however after a
remount the opaque flag is used and upper directory is treated as opaque.
This causes files created in the lower layer to be hidden when using
multiple lower directories.

Fix by not copying up the opaque flag.

To reproduce:

 ----8<---------8<---------8<---------8<---------8<---------8<----
mkdir -p l/d/s u v w mnt
mount -t overlay overlay -olowerdir=l,upperdir=u,workdir=w mnt
rm -rf mnt/d/
mkdir -p mnt/d/n
umount mnt
mount -t overlay overlay -olowerdir=u:l,upperdir=v,workdir=w mnt
touch mnt/d/foo
umount mnt
mount -t overlay overlay -olowerdir=u:l,upperdir=v,workdir=w mnt
ls mnt/d
 ----8<---------8<---------8<---------8<---------8<---------8<----

output should be:  "foo  n"

Reported-by: Derek McGowan <dmcg@drizz.net>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=151291
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Cc: <stable@vger.kernel.org>
fs/overlayfs/copy_up.c
fs/overlayfs/inode.c
fs/overlayfs/overlayfs.h