#include <linux/kobject.h>
 #include <asm/uaccess.h>
 #include <linux/gfs2_ondisk.h>
+#include <linux/genhd.h>
 
 #include "gfs2.h"
 #include "incore.h"
        if (error)
                goto fail_tune;
 
+       error = sysfs_create_link(&sdp->sd_kobj,
+                                 &disk_to_dev(sb->s_bdev->bd_disk)->kobj,
+                                 "device");
+       if (error)
+               goto fail_lock_module;
+
        kobject_uevent_env(&sdp->sd_kobj, KOBJ_ADD, envp);
        return 0;
 
+fail_lock_module:
+       sysfs_remove_group(&sdp->sd_kobj, &lock_module_group);
 fail_tune:
        sysfs_remove_group(&sdp->sd_kobj, &tune_group);
 fail_reg:
 
 void gfs2_sys_fs_del(struct gfs2_sbd *sdp)
 {
+       sysfs_remove_link(&sdp->sd_kobj, "device");
        sysfs_remove_group(&sdp->sd_kobj, &tune_group);
        sysfs_remove_group(&sdp->sd_kobj, &lock_module_group);
        kobject_put(&sdp->sd_kobj);