瀏覽代碼

ovl: Check redirects for metacopy files

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>
Vivek Goyal 7 年之前
父節點
當前提交
b8a8824ca0
共有 1 個文件被更改,包括 2 次插入2 次删除
  1. 2 2
      fs/overlayfs/namei.c

+ 2 - 2
fs/overlayfs/namei.c

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