提交 7925dad8 编写于 作者: M Miklos Szeredi

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: NMiklos Szeredi <mszeredi@redhat.com>
上级 3bb7df92
......@@ -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;
......
......@@ -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;
......
......@@ -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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册