ovl: prepare to copy up without workdir
authorAmir Goldstein <amir73il@gmail.com>
Fri, 3 Apr 2020 05:43:12 +0000 (08:43 +0300)
committerMiklos Szeredi <mszeredi@redhat.com>
Wed, 13 May 2020 09:11:24 +0000 (11:11 +0200)
With index=on, we copy up lower hardlinks to work dir and move them into
index dir. Fix locking to allow work dir and index dir to be the same
directory.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/overlayfs/copy_up.c

index 9709cf2..6600453 100644 (file)
@@ -584,9 +584,10 @@ static int ovl_copy_up_workdir(struct ovl_copy_up_ctx *c)
                .link = c->link
        };
 
-       err = ovl_lock_rename_workdir(c->workdir, c->destdir);
-       if (err)
-               return err;
+       /* workdir and destdir could be the same when copying up to indexdir */
+       err = -EIO;
+       if (lock_rename(c->workdir, c->destdir) != NULL)
+               goto unlock;
 
        err = ovl_prep_cu_creds(c->dentry, &cc);
        if (err)