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 04/28] ovl: During copy up, first copy up metadata and then data
    Date
    From: Vivek Goyal <vgoyal@redhat.com>

    Just a little re-ordering of code. This helps with next patch where after
    copying up metadata, we skip data copying step, if needed.

    Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
    Reviewed-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    ---
    fs/overlayfs/copy_up.c | 36 +++++++++++++++++-------------------
    1 file changed, 17 insertions(+), 19 deletions(-)

    diff --git a/fs/overlayfs/copy_up.c b/fs/overlayfs/copy_up.c
    index 91b3b668482b..c072a4c0cf08 100644
    --- a/fs/overlayfs/copy_up.c
    +++ b/fs/overlayfs/copy_up.c
    @@ -490,28 +490,10 @@ static int ovl_copy_up_inode(struct ovl_copy_up_ctx *c, struct dentry *temp)
    {
    int err;

    - if (S_ISREG(c->stat.mode)) {
    - struct path upperpath;
    -
    - ovl_path_upper(c->dentry, &upperpath);
    - BUG_ON(upperpath.dentry != NULL);
    - upperpath.dentry = temp;
    -
    - err = ovl_copy_up_data(&c->lowerpath, &upperpath, c->stat.size);
    - if (err)
    - return err;
    - }
    -
    err = ovl_copy_xattr(c->lowerpath.dentry, temp);
    if (err)
    return err;

    - inode_lock(temp->d_inode);
    - err = ovl_set_attr(temp, &c->stat);
    - inode_unlock(temp->d_inode);
    - if (err)
    - return err;
    -
    /*
    * Store identifier of lower inode in upper inode xattr to
    * allow lookup of the copy up origin inode.
    @@ -525,7 +507,23 @@ static int ovl_copy_up_inode(struct ovl_copy_up_ctx *c, struct dentry *temp)
    return err;
    }

    - return 0;
    + if (S_ISREG(c->stat.mode)) {
    + struct path upperpath;
    +
    + ovl_path_upper(c->dentry, &upperpath);
    + BUG_ON(upperpath.dentry != NULL);
    + upperpath.dentry = temp;
    +
    + err = ovl_copy_up_data(&c->lowerpath, &upperpath, c->stat.size);
    + if (err)
    + return err;
    + }
    +
    + inode_lock(temp->d_inode);
    + err = ovl_set_attr(temp, &c->stat);
    + inode_unlock(temp->d_inode);
    +
    + return err;
    }

    static int ovl_copy_up_locked(struct ovl_copy_up_ctx *c)
    --
    2.14.3
    \
     
     \ /
      Last update: 2018-05-29 17:02    [W:4.061 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site