]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ovl: Check redirects for metacopy files
authorVivek Goyal <vgoyal@redhat.com>
Fri, 11 May 2018 15:49:31 +0000 (11:49 -0400)
committerMiklos Szeredi <mszeredi@redhat.com>
Fri, 20 Jul 2018 07:56:13 +0000 (09:56 +0200)
Right now we rely on path based lookup for data origin of metacopy upper.
This will work only if upper has not been renamed.  We solved this problem
already for merged directories using redirect.  Use same logic for metacopy
files.

This patch just goes on to check redirects for metacopy files.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/overlayfs/namei.c

index e4bbe6ed6a87cd04c2e7094a8522ef937781849e..eddb80dd0766430536344ba09446b5a1d4d68e38 100644 (file)
@@ -272,7 +272,8 @@ static int ovl_lookup_single(struct dentry *base, struct ovl_lookup_data *d,
 
                d->metacopy = err;
                d->stop = !d->metacopy;
-               goto out;
+               if (!d->metacopy || d->last)
+                       goto out;
        } else {
                if (last_element)
                        d->is_dir = true;
@@ -874,7 +875,6 @@ struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry,
                if (upperdentry && !d.is_dir) {
                        unsigned int origin_ctr = 0;
 
-                       BUG_ON(d.redirect);
                        /*
                         * Lookup copy up origin by decoding origin file handle.
                         * We may get a disconnected dentry, which is fine,