ovl: During copy up, first copy up metadata and then data
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>
This commit is contained in:
parent
d5791044d2
commit
bd64e57586
@ -490,28 +490,10 @@ static int ovl_copy_up_inode(struct ovl_copy_up_ctx *c, struct dentry *temp)
|
|||||||
{
|
{
|
||||||
int err;
|
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);
|
err = ovl_copy_xattr(c->lowerpath.dentry, temp);
|
||||||
if (err)
|
if (err)
|
||||||
return 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
|
* Store identifier of lower inode in upper inode xattr to
|
||||||
* allow lookup of the copy up origin inode.
|
* 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 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)
|
static int ovl_copy_up_locked(struct ovl_copy_up_ctx *c)
|
||||||
|
Loading…
Reference in New Issue
Block a user