OSDN Git Service

debugfs: simplify __debugfs_remove_file()
authorAmir Goldstein <amir73il@gmail.com>
Sun, 26 May 2019 14:34:07 +0000 (17:34 +0300)
committerJan Kara <jack@suse.cz>
Thu, 20 Jun 2019 12:46:42 +0000 (14:46 +0200)
Move simple_unlink()+d_delete() from __debugfs_remove_file() into
caller __debugfs_remove() and rename helper for post remove file to
__debugfs_file_removed().

This will simplify adding fsnotify_unlink() hook.

Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/debugfs/inode.c

index acef14a..d89874d 100644 (file)
@@ -617,13 +617,10 @@ struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent,
 }
 EXPORT_SYMBOL_GPL(debugfs_create_symlink);
 
-static void __debugfs_remove_file(struct dentry *dentry, struct dentry *parent)
+static void __debugfs_file_removed(struct dentry *dentry)
 {
        struct debugfs_fsdata *fsd;
 
-       simple_unlink(d_inode(parent), dentry);
-       d_delete(dentry);
-
        /*
         * Paired with the closing smp_mb() implied by a successful
         * cmpxchg() in debugfs_file_get(): either
@@ -644,16 +641,15 @@ static int __debugfs_remove(struct dentry *dentry, struct dentry *parent)
 
        if (simple_positive(dentry)) {
                dget(dentry);
-               if (!d_is_reg(dentry)) {
-                       if (d_is_dir(dentry))
-                               ret = simple_rmdir(d_inode(parent), dentry);
-                       else
-                               simple_unlink(d_inode(parent), dentry);
-                       if (!ret)
-                               d_delete(dentry);
+               if (d_is_dir(dentry)) {
+                       ret = simple_rmdir(d_inode(parent), dentry);
                } else {
-                       __debugfs_remove_file(dentry, parent);
+                       simple_unlink(d_inode(parent), dentry);
                }
+               if (!ret)
+                       d_delete(dentry);
+               if (d_is_reg(dentry))
+                       __debugfs_file_removed(dentry);
                dput(dentry);
        }
        return ret;