ulong ref;
        struct work_struct work;/* disk create work struct */
        struct gendisk *gd;
+       struct dentry *debugfs;
        struct request_queue *blkq;
        struct hd_geometry geo;
        sector_t ssize;
 int aoeblk_init(void);
 void aoeblk_exit(void);
 void aoeblk_gdalloc(void *);
+void aoedisk_rm_debugfs(struct aoedev *d);
 void aoedisk_rm_sysfs(struct aoedev *d);
 
 int aoechr_init(void);
 
        .attrs = aoe_attrs,
 };
 
+static const struct file_operations aoe_debugfs_fops;
+
+static void
+aoedisk_add_debugfs(struct aoedev *d)
+{
+       struct dentry *entry;
+       char *p;
+
+       if (aoe_debugfs_dir == NULL)
+               return;
+       p = strchr(d->gd->disk_name, '/');
+       if (p == NULL)
+               p = d->gd->disk_name;
+       else
+               p++;
+       BUG_ON(*p == '\0');
+       entry = debugfs_create_file(p, 0444, aoe_debugfs_dir, d,
+                                   &aoe_debugfs_fops);
+       if (IS_ERR_OR_NULL(entry)) {
+               pr_info("aoe: cannot create debugfs file for %s\n",
+                       d->gd->disk_name);
+               return;
+       }
+       BUG_ON(d->debugfs);
+       d->debugfs = entry;
+}
+void
+aoedisk_rm_debugfs(struct aoedev *d)
+{
+       BUG_ON(d->debugfs == NULL);
+       debugfs_remove(d->debugfs);
+       d->debugfs = NULL;
+}
+
 static int
 aoedisk_add_sysfs(struct aoedev *d)
 {
 
        add_disk(gd);
        aoedisk_add_sysfs(d);
+       aoedisk_add_debugfs(d);
 
        spin_lock_irqsave(&d->lock, flags);
        WARN_ON(!(d->flags & DEVFL_GD_NOW));