KVM: Remove unnecessary debugfs dentry references
authorJanosch Frank <frankja@linux.vnet.ibm.com>
Wed, 14 Oct 2015 10:37:35 +0000 (12:37 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Mon, 30 Nov 2015 11:47:05 +0000 (12:47 +0100)
KVM creates debugfs files to export VM statistics to userland. To be
able to remove them on kvm exit it tracks the files' dentries.

Since their parent directory is also tracked and since each parent
direntry knows its children we can easily remove them by using
debugfs_remove_recursive(kvm_debugfs_dir). Therefore we don't
need the extra tracking in the kvm_stats_debugfs_item anymore.

Signed-off-by: Janosch Frank <frankja@linux.vnet.ibm.com>
Reviewed-By: Sascha Silbe <silbe@linux.vnet.ibm.com>
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
include/linux/kvm_host.h
virt/kvm/kvm_main.c

index a754fc08e194d90287c9abc6793cb3866407d04c..590c46e672dfa415f54028c278675bfd941f4b90 100644 (file)
@@ -1016,7 +1016,6 @@ struct kvm_stats_debugfs_item {
        const char *name;
        int offset;
        enum kvm_stat_kind kind;
-       struct dentry *dentry;
 };
 extern struct kvm_stats_debugfs_item debugfs_entries[];
 extern struct dentry *kvm_debugfs_dir;
index 9649a42ee990ecbc7bd354d5426173a1ddc934e7..be3cef12706c63c7e2f2f3dacb3d251f0974d968 100644 (file)
@@ -3447,10 +3447,9 @@ static int kvm_init_debug(void)
                goto out;
 
        for (p = debugfs_entries; p->name; ++p) {
-               p->dentry = debugfs_create_file(p->name, 0444, kvm_debugfs_dir,
-                                               (void *)(long)p->offset,
-                                               stat_fops[p->kind]);
-               if (p->dentry == NULL)
+               if (!debugfs_create_file(p->name, 0444, kvm_debugfs_dir,
+                                        (void *)(long)p->offset,
+                                        stat_fops[p->kind]))
                        goto out_dir;
        }
 
@@ -3462,15 +3461,6 @@ out:
        return r;
 }
 
-static void kvm_exit_debug(void)
-{
-       struct kvm_stats_debugfs_item *p;
-
-       for (p = debugfs_entries; p->name; ++p)
-               debugfs_remove(p->dentry);
-       debugfs_remove(kvm_debugfs_dir);
-}
-
 static int kvm_suspend(void)
 {
        if (kvm_usage_count)
@@ -3628,7 +3618,7 @@ EXPORT_SYMBOL_GPL(kvm_init);
 
 void kvm_exit(void)
 {
-       kvm_exit_debug();
+       debugfs_remove_recursive(kvm_debugfs_dir);
        misc_deregister(&kvm_dev);
        kmem_cache_destroy(kvm_vcpu_cache);
        kvm_async_pf_deinit();