All of lore.kernel.org
 help / color / mirror / Atom feed
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 ~~~~~~~~~~~~

             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.