From: Mikhail Afanasyev <mikhail.afanasyev@tri.global>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Miklos Szeredi <mszeredi@redhat.com>
Cc: Stefan Bader <stefan.bader@canonical.com>, stable@vger.kernel.org
Subject: ovl: renames in overlayfs over tmpfs returns ESTALE in 4.4
Date: Tue, 13 Sep 2016 13:48:31 -0400 [thread overview]
Message-ID: <6ac370bf-3537-0c3e-97d5-f67ece5c7bf2@tri.global> (raw)
Hello,
I believe the 4.4.y kernel has broken overlayfs: removing the file
which is present in lower layer, then renaming a file from upper layer
to have the same name fails with ESTALE. This pattern is used quite
often, for example by 'depmod' and 'apt-get update'. The bug only seems
to happen when some of the underlying directories are on tmpfs.
The test script (below) works fine on Ubuntu kernel 4.4.0-34-generic or
earlier, and it fails in Ubuntu kernel 4.4.0-36-generic. This
corresponds to Linux 4.4.16.
The error is:
mv: cannot move 'ovf/file.new' to 'ovf/file': Stale file handle
While I have not performed the full bisect, there were only 3 patches
touching 'fs/overlayfs' which went into the tree between the two revisions:
https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/xenial/log/?id=b275624b3b4303d21eefd78c5b3bf04c34267e4e
ovl: verify upper dentry before unlink and rename
https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/xenial/commit/?id=a4452ab01db4780937d4e19861d3b841c373c3b5
ovl: verify upper dentry in ovl_remove_and_whiteout()
https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/xenial/commit/?id=90089541cf2982cff69724c34f7ae9a088df9c2f
ovl: Copy up underlying inode's ->i_mode to overlay inode
https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/xenial/commit/?id=8326f3ef42b56d97d1060adff6d4ab35818e3b9a
Of them, the first two add a return with ESTALE error and would be the
prime suspects.
I also understand that 4.4.16 is a somewhat old kernel, but I believe
the bug may still be present in the latest linux-4.4.y -- there were no
changes to the relevant file (fs/overlayfs/dir.c) since these patches.
Mikhail Afanasyev
~~~~~~~~ TEST SCRIPT ~~~~~~
#!/bin/sh -ex
mkdir -p /tmp/ovf-bug-demo
cd /tmp/ovf-bug-demo
umount ./tmpfs/ovf || true
umount ./tmpfs || true
mkdir -p tmpfs
mount -t tmpfs none tmpfs
cd tmpfs
mkdir -p upper lower ovf work
touch lower/file
mount -t overlayfs none -o
rw,noatime,lowerdir=$PWD/lower,upperdir=$PWD/upper,workdir=$PWD/work
$PWD/ovf
touch ovf/file.new
rm ovf/file
mv ovf/file.new ovf/file
~~~~~~~~~ END ~~~~~~~~~~~~
next reply other threads:[~2016-09-13 17:48 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-13 17:48 Mikhail Afanasyev [this message]
2016-09-13 19:59 ` ovl: renames in overlayfs over tmpfs returns ESTALE in 4.4 Greg Kroah-Hartman
2016-09-14 9:41 ` Stefan Bader
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6ac370bf-3537-0c3e-97d5-f67ece5c7bf2@tri.global \
--to=mikhail.afanasyev@tri.global \
--cc=gregkh@linuxfoundation.org \
--cc=mszeredi@redhat.com \
--cc=stable@vger.kernel.org \
--cc=stefan.bader@canonical.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.