Public bug reported:
#!/bin/bash
# ---------------------------------------------------------------------
# This script exhibits a bug in overlayfs in kernel 4.4.
# The bug is not present in kernel 4.2.
# The bug can be reproduced in an x86_64 virtual-machine;
# 32-bit has not been tested.
#
# With kernel 4.2, the script output ends with:
# "script completed without encountering a kernel bug"
#
# With kernel 4.4, the script output ends with:
# "rm: cannot remove ‘mnt_ovl/sub/sub.txt’:
# Value too large for defined data type"
#
# The script depends upon lxc-usernsexec (part of the lxc1 package) to
# create a user-namespace.
#
# The script should be run as a normal user (not root), in a directory where
# the user has write-permission:
# ./script
# --------------------------------------------------------------------
cleanup()
{
[[ -d "$storedir" ]] || exit 1
cd "$storedir" || exit 1
[[ -d "$tmpdir" ]] || exit 1
lxc-usernsexec -m b:0:1000:1 -m b:100000:100000:1 -- rm -rf "$tmpdir"
}
trap cleanup EXIT
set -e
storedir="$(pwd)"
# create tmpdir
tmpdir="$(mktemp -d --tmpdir=.)"
cd "$tmpdir"
# create lowerdir for overlay
mkdir -p lower/sub
touch lower/lower.txt lower/sub/sub.txt
cd ..
chmod -R a+rwX "$tmpdir"
# run a script in a user namepace
lxc-usernsexec -m b:0:100000:65534 -- bash << EOF
set -e
cd "$tmpdir"
# create tmpfs
mkdir mnt_tmpfs
mount -t tmpfs tmpfs mnt_tmpfs
# create upperdir and workdir for overlay
mkdir mnt_tmpfs/{upper,work}
# mount overlay
mkdir mnt_ovl
mount -t overlay \
-o lowerdir=lower,upperdir=mnt_tmpfs/upper,workdir=mnt_tmpfs/work \
overlay mnt_ovl
echo 'overlay directory listing'
ls -RF mnt_ovl
echo ''
set -x
rm mnt_ovl/lower.txt # always succeeds
rm mnt_ovl/sub/sub.txt # fails with kernel 4.4+
set +x
echo 'script completed without encountering a kernel bug'
EOF
** Affects: linux (Ubuntu)
Importance: Undecided
Status: New
** Tags: overlayfs
** Description changed:
#!/bin/bash
- #
----------------------------------------------------------------------------------------------
+ # ---------------------------------------------------------------------
# This script exhibits a bug in overlayfs in kernel 4.4.
# The bug is not present in kernel 4.2.
- # The bug can be reproduced in an x86_64 virtual-machine; 32-bit has not been
tested.
+ # The bug can be reproduced in an x86_64 virtual-machine;
+ # 32-bit has not been tested.
#
# With kernel 4.2, the script output ends with:
# "script completed without encountering a kernel bug"
#
# With kernel 4.4, the script output ends with:
- # "rm: cannot remove ‘mnt_ovl/sub/sub.txt’: Value too large for defined
data type"
+ # "rm: cannot remove ‘mnt_ovl/sub/sub.txt’:
+ # Value too large for defined data type"
#
- # The script depends upon lxc-usernsexec (part of the lxc1 package) to create
a user-namespace.
+ # The script depends upon lxc-usernsexec (part of the lxc1 package) to
+ # create a user-namespace.
#
# The script should be run as a normal user (not root), in a directory where
# the user has write-permission:
# ./script
- #
----------------------------------------------------------------------------------------------
+ # --------------------------------------------------------------------
cleanup()
{
- [[ -d "$storedir" ]] || exit 1
- cd "$storedir" || exit 1
- [[ -d "$tmpdir" ]] || exit 1
- lxc-usernsexec -m b:0:1000:1 -m b:100000:100000:1 -- rm -rf "$tmpdir"
+ [[ -d "$storedir" ]] || exit 1
+ cd "$storedir" || exit 1
+ [[ -d "$tmpdir" ]] || exit 1
+ lxc-usernsexec -m b:0:1000:1 -m b:100000:100000:1 -- rm -rf "$tmpdir"
}
trap cleanup EXIT
set -e
storedir="$(pwd)"
# create tmpdir
tmpdir="$(mktemp -d --tmpdir=.)"
cd "$tmpdir"
# create lowerdir for overlay
mkdir -p lower/sub
touch lower/lower.txt lower/sub/sub.txt
cd ..
chmod -R a+rwX "$tmpdir"
# run a script in a user namepace
lxc-usernsexec -m b:0:100000:65534 -- bash << EOF
- set -e
- cd "$tmpdir"
+ set -e
+ cd "$tmpdir"
- # create tmpfs
- mkdir mnt_tmpfs
- mount -t tmpfs tmpfs mnt_tmpfs
+ # create tmpfs
+ mkdir mnt_tmpfs
+ mount -t tmpfs tmpfs mnt_tmpfs
- # create upperdir and workdir for overlay
- mkdir mnt_tmpfs/{upper,work}
+ # create upperdir and workdir for overlay
+ mkdir mnt_tmpfs/{upper,work}
- # mount overlay
- mkdir mnt_ovl
- mount -t overlay \
- -o lowerdir=lower,upperdir=mnt_tmpfs/upper,workdir=mnt_tmpfs/work overlay
mnt_ovl
+ # mount overlay
+ mkdir mnt_ovl
+ mount -t overlay \
+ -o lowerdir=lower,upperdir=mnt_tmpfs/upper,workdir=mnt_tmpfs/work \
+ overlay mnt_ovl
- echo 'overlay directory listing'
- ls -RF mnt_ovl
- echo ''
+ echo 'overlay directory listing'
+ ls -RF mnt_ovl
+ echo ''
- set -x
- rm mnt_ovl/lower.txt # always succeeds
- rm mnt_ovl/sub/sub.txt # fails with kernel 4.4+
+ set -x
+ rm mnt_ovl/lower.txt # always succeeds
+ rm mnt_ovl/sub/sub.txt # fails with kernel 4.4+
- set +x
- echo 'script completed without encountering a kernel bug'
-
+ set +x
+ echo 'script completed without encountering a kernel bug'
+
EOF
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1617388
Title:
When using overlayfs with kernel 4.4, some files cannot be deleted.
Status in linux package in Ubuntu:
New
Bug description:
#!/bin/bash
# ---------------------------------------------------------------------
# This script exhibits a bug in overlayfs in kernel 4.4.
# The bug is not present in kernel 4.2.
# The bug can be reproduced in an x86_64 virtual-machine;
# 32-bit has not been tested.
#
# With kernel 4.2, the script output ends with:
# "script completed without encountering a kernel bug"
#
# With kernel 4.4, the script output ends with:
# "rm: cannot remove ‘mnt_ovl/sub/sub.txt’:
# Value too large for defined data type"
#
# The script depends upon lxc-usernsexec (part of the lxc1 package) to
# create a user-namespace.
#
# The script should be run as a normal user (not root), in a directory where
# the user has write-permission:
# ./script
# --------------------------------------------------------------------
cleanup()
{
[[ -d "$storedir" ]] || exit 1
cd "$storedir" || exit 1
[[ -d "$tmpdir" ]] || exit 1
lxc-usernsexec -m b:0:1000:1 -m b:100000:100000:1 -- rm -rf "$tmpdir"
}
trap cleanup EXIT
set -e
storedir="$(pwd)"
# create tmpdir
tmpdir="$(mktemp -d --tmpdir=.)"
cd "$tmpdir"
# create lowerdir for overlay
mkdir -p lower/sub
touch lower/lower.txt lower/sub/sub.txt
cd ..
chmod -R a+rwX "$tmpdir"
# run a script in a user namepace
lxc-usernsexec -m b:0:100000:65534 -- bash << EOF
set -e
cd "$tmpdir"
# create tmpfs
mkdir mnt_tmpfs
mount -t tmpfs tmpfs mnt_tmpfs
# create upperdir and workdir for overlay
mkdir mnt_tmpfs/{upper,work}
# mount overlay
mkdir mnt_ovl
mount -t overlay \
-o lowerdir=lower,upperdir=mnt_tmpfs/upper,workdir=mnt_tmpfs/work \
overlay mnt_ovl
echo 'overlay directory listing'
ls -RF mnt_ovl
echo ''
set -x
rm mnt_ovl/lower.txt # always succeeds
rm mnt_ovl/sub/sub.txt # fails with kernel 4.4+
set +x
echo 'script completed without encountering a kernel bug'
EOF
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1617388/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp