lkml.org 
[lkml]   [2018]   [May]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 11/39] Revert "Revert "ovl: get_write_access() in truncate""
    Date
    This reverts commit 31c3a7069593b072bd57192b63b62f9a7e994e9a.

    Re-add functionality dealing with i_writecount on truncate to overlayfs.
    This patch shouldn't have any observable effects, since we just re-assert
    the writecout that vfs_truncate() already got for us.

    This is in preparation for moving overlay functionality out of the VFS.

    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    ---
    fs/overlayfs/inode.c | 21 +++++++++++++++++++++
    1 file changed, 21 insertions(+)

    diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c
    index 24fc27683a57..0116ec12451d 100644
    --- a/fs/overlayfs/inode.c
    +++ b/fs/overlayfs/inode.c
    @@ -39,10 +39,27 @@ int ovl_setattr(struct dentry *dentry, struct iattr *attr)
    if (err)
    goto out;

    + if (attr->ia_valid & ATTR_SIZE) {
    + struct inode *realinode = d_inode(ovl_dentry_real(dentry));
    +
    + err = -ETXTBSY;
    + if (atomic_read(&realinode->i_writecount) < 0)
    + goto out_drop_write;
    + }
    +
    err = ovl_copy_up(dentry);
    if (!err) {
    + struct inode *winode = NULL;
    +
    upperdentry = ovl_dentry_upper(dentry);

    + if (attr->ia_valid & ATTR_SIZE) {
    + winode = d_inode(upperdentry);
    + err = get_write_access(winode);
    + if (err)
    + goto out_drop_write;
    + }
    +
    if (attr->ia_valid & (ATTR_KILL_SUID|ATTR_KILL_SGID))
    attr->ia_valid &= ~ATTR_MODE;

    @@ -53,7 +70,11 @@ int ovl_setattr(struct dentry *dentry, struct iattr *attr)
    if (!err)
    ovl_copyattr(upperdentry->d_inode, dentry->d_inode);
    inode_unlock(upperdentry->d_inode);
    +
    + if (winode)
    + put_write_access(winode);
    }
    +out_drop_write:
    ovl_drop_write(dentry);
    out:
    return err;
    --
    2.14.3
    \
     
     \ /
      Last update: 2018-05-29 17:14    [W:4.292 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site