From: Vivek Goyal <[email protected]>

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 <[email protected]>
Reviewed-by: Amir Goldstein <[email protected]>
Signed-off-by: Miklos Szeredi <[email protected]>
---
 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

Reply via email to