]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
ovl: Move the copy up helpers to copy_up.c
authorVivek Goyal <vgoyal@redhat.com>
Fri, 11 May 2018 15:49:27 +0000 (11:49 -0400)
committerMiklos Szeredi <mszeredi@redhat.com>
Fri, 20 Jul 2018 07:56:06 +0000 (09:56 +0200)
Right now two copy up helpers are in inode.c.  Amir suggested it might be
better to move these to copy_up.c.

There will one more related function which will come in later patch.

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
fs/overlayfs/inode.c
fs/overlayfs/overlayfs.h

index 65ee07e3614168fc01d9eca9cc1483e48b6d3bea..304b268607438812db33e6b92d756ec48852d675 100644 (file)
@@ -779,6 +779,38 @@ int ovl_copy_up_flags(struct dentry *dentry, int flags)
        return err;
 }
 
+static bool ovl_open_need_copy_up(struct dentry *dentry, int flags)
+{
+       /* Copy up of disconnected dentry does not set upper alias */
+       if (ovl_dentry_upper(dentry) &&
+           (ovl_dentry_has_upper_alias(dentry) ||
+            (dentry->d_flags & DCACHE_DISCONNECTED)))
+               return false;
+
+       if (special_file(d_inode(dentry)->i_mode))
+               return false;
+
+       if (!(OPEN_FMODE(flags) & FMODE_WRITE) && !(flags & O_TRUNC))
+               return false;
+
+       return true;
+}
+
+int ovl_open_maybe_copy_up(struct dentry *dentry, unsigned int file_flags)
+{
+       int err = 0;
+
+       if (ovl_open_need_copy_up(dentry, file_flags)) {
+               err = ovl_want_write(dentry);
+               if (!err) {
+                       err = ovl_copy_up_flags(dentry, file_flags);
+                       ovl_drop_write(dentry);
+               }
+       }
+
+       return err;
+}
+
 int ovl_copy_up(struct dentry *dentry)
 {
        return ovl_copy_up_flags(dentry, 0);
index 4833545d709b50992bcbff038fd80f994b9023b3..a30cbd754bf21b21d6469a2709e9aacf41cbbcb6 100644 (file)
@@ -399,38 +399,6 @@ struct posix_acl *ovl_get_acl(struct inode *inode, int type)
        return acl;
 }
 
-static bool ovl_open_need_copy_up(struct dentry *dentry, int flags)
-{
-       /* Copy up of disconnected dentry does not set upper alias */
-       if (ovl_dentry_upper(dentry) &&
-           (ovl_dentry_has_upper_alias(dentry) ||
-            (dentry->d_flags & DCACHE_DISCONNECTED)))
-               return false;
-
-       if (special_file(d_inode(dentry)->i_mode))
-               return false;
-
-       if (!(OPEN_FMODE(flags) & FMODE_WRITE) && !(flags & O_TRUNC))
-               return false;
-
-       return true;
-}
-
-int ovl_open_maybe_copy_up(struct dentry *dentry, unsigned int file_flags)
-{
-       int err = 0;
-
-       if (ovl_open_need_copy_up(dentry, file_flags)) {
-               err = ovl_want_write(dentry);
-               if (!err) {
-                       err = ovl_copy_up_flags(dentry, file_flags);
-                       ovl_drop_write(dentry);
-               }
-       }
-
-       return err;
-}
-
 int ovl_update_time(struct inode *inode, struct timespec64 *ts, int flags)
 {
        if (flags & S_ATIME) {
index 69010e3dd846ea383fdb00af7eb864d73e138996..c0318b5a50f09750af67bab23426296fbec281b6 100644 (file)
@@ -325,7 +325,6 @@ int ovl_xattr_get(struct dentry *dentry, struct inode *inode, const char *name,
                  void *value, size_t size);
 ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size);
 struct posix_acl *ovl_get_acl(struct inode *inode, int type);
-int ovl_open_maybe_copy_up(struct dentry *dentry, unsigned int file_flags);
 int ovl_update_time(struct inode *inode, struct timespec64 *ts, int flags);
 bool ovl_is_private_xattr(const char *name);
 
@@ -384,6 +383,7 @@ extern const struct file_operations ovl_file_operations;
 /* copy_up.c */
 int ovl_copy_up(struct dentry *dentry);
 int ovl_copy_up_flags(struct dentry *dentry, int flags);
+int ovl_open_maybe_copy_up(struct dentry *dentry, unsigned int file_flags);
 int ovl_copy_xattr(struct dentry *old, struct dentry *new);
 int ovl_set_attr(struct dentry *upper, struct kstat *stat);
 struct ovl_fh *ovl_encode_real_fh(struct dentry *real, bool is_upper);