Commit 8cf9ee50 authored by Miklos Szeredi's avatar Miklos Szeredi

Revert "vfs: do get_write_access() on upper layer of overlayfs"

This reverts commit 4d0c5ba2.

We now get write access on both overlay and underlying layers so this patch
is no longer needed for correct operation.
Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
parent 4ab30319
...@@ -1654,8 +1654,7 @@ check_conflicting_open(const struct dentry *dentry, const long arg, int flags) ...@@ -1654,8 +1654,7 @@ check_conflicting_open(const struct dentry *dentry, const long arg, int flags)
if (flags & FL_LAYOUT) if (flags & FL_LAYOUT)
return 0; return 0;
if ((arg == F_RDLCK) && if ((arg == F_RDLCK) && (atomic_read(&inode->i_writecount) > 0))
(atomic_read(&d_real_inode(dentry)->i_writecount) > 0))
return -EAGAIN; return -EAGAIN;
if ((arg == F_WRLCK) && ((d_count(dentry) > 1) || if ((arg == F_WRLCK) && ((d_count(dentry) > 1) ||
......
...@@ -68,7 +68,6 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, ...@@ -68,7 +68,6 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
long vfs_truncate(const struct path *path, loff_t length) long vfs_truncate(const struct path *path, loff_t length)
{ {
struct inode *inode; struct inode *inode;
struct dentry *upperdentry;
long error; long error;
inode = path->dentry->d_inode; inode = path->dentry->d_inode;
...@@ -91,17 +90,7 @@ long vfs_truncate(const struct path *path, loff_t length) ...@@ -91,17 +90,7 @@ long vfs_truncate(const struct path *path, loff_t length)
if (IS_APPEND(inode)) if (IS_APPEND(inode))
goto mnt_drop_write_and_out; goto mnt_drop_write_and_out;
/* error = get_write_access(inode);
* If this is an overlayfs then do as if opening the file so we get
* write access on the upper inode, not on the overlay inode. For
* non-overlay filesystems d_real() is an identity function.
*/
upperdentry = d_real(path->dentry, NULL, O_WRONLY);
error = PTR_ERR(upperdentry);
if (IS_ERR(upperdentry))
goto mnt_drop_write_and_out;
error = get_write_access(upperdentry->d_inode);
if (error) if (error)
goto mnt_drop_write_and_out; goto mnt_drop_write_and_out;
...@@ -120,7 +109,7 @@ long vfs_truncate(const struct path *path, loff_t length) ...@@ -120,7 +109,7 @@ long vfs_truncate(const struct path *path, loff_t length)
error = do_truncate(path->dentry, length, 0, NULL); error = do_truncate(path->dentry, length, 0, NULL);
put_write_and_out: put_write_and_out:
put_write_access(upperdentry->d_inode); put_write_access(inode);
mnt_drop_write_and_out: mnt_drop_write_and_out:
mnt_drop_write(path->mnt); mnt_drop_write(path->mnt);
out: out:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment