ovl: separate detection of remote upper layer from stacked overlay

Following patch will allow remote as upper layer, but not overlay stacked
on upper layer.  Separate the two concepts.

This patch is doesn't change behavior.

Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
Miklos Szeredi 2020-03-17 15:04:22 +01:00
parent 3bb7df928a
commit 7925dad839
3 changed files with 10 additions and 10 deletions

View File

@ -845,7 +845,8 @@ struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry,
if (err)
goto out;
if (upperdentry && unlikely(ovl_dentry_remote(upperdentry))) {
if (upperdentry && (upperdentry->d_flags & DCACHE_OP_REAL ||
unlikely(ovl_dentry_remote(upperdentry)))) {
dput(upperdentry);
err = -EREMOTE;
goto out;

View File

@ -752,13 +752,13 @@ static int ovl_mount_dir(const char *name, struct path *path)
ovl_unescape(tmp);
err = ovl_mount_dir_noesc(tmp, path);
if (!err)
if (ovl_dentry_remote(path->dentry)) {
pr_err("filesystem on '%s' not supported as upperdir\n",
tmp);
path_put_init(path);
err = -EINVAL;
}
if (!err && (ovl_dentry_remote(path->dentry) ||
path->dentry->d_flags & DCACHE_OP_REAL)) {
pr_err("filesystem on '%s' not supported as upperdir\n",
tmp);
path_put_init(path);
err = -EINVAL;
}
kfree(tmp);
}
return err;

View File

@ -93,8 +93,7 @@ struct ovl_entry *ovl_alloc_entry(unsigned int numlower)
bool ovl_dentry_remote(struct dentry *dentry)
{
return dentry->d_flags &
(DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE |
DCACHE_OP_REAL);
(DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE);
}
bool ovl_dentry_weird(struct dentry *dentry)