void disk_add_events(struct gendisk *disk);
 void disk_del_events(struct gendisk *disk);
 void disk_release_events(struct gendisk *disk);
+extern struct device_attribute dev_attr_events;
+extern struct device_attribute dev_attr_events_async;
+extern struct device_attribute dev_attr_events_poll_msecs;
 
 #endif /* BLK_INTERNAL_H */
 
        return count;
 }
 
-static const DEVICE_ATTR(events, 0444, disk_events_show, NULL);
-static const DEVICE_ATTR(events_async, 0444, disk_events_async_show, NULL);
-static const DEVICE_ATTR(events_poll_msecs, 0644,
-                        disk_events_poll_msecs_show,
-                        disk_events_poll_msecs_store);
-
-static const struct attribute *disk_events_attrs[] = {
-       &dev_attr_events.attr,
-       &dev_attr_events_async.attr,
-       &dev_attr_events_poll_msecs.attr,
-       NULL,
-};
+DEVICE_ATTR(events, 0444, disk_events_show, NULL);
+DEVICE_ATTR(events_async, 0444, disk_events_async_show, NULL);
+DEVICE_ATTR(events_poll_msecs, 0644, disk_events_poll_msecs_show,
+           disk_events_poll_msecs_store);
 
 /*
  * The default polling interval can be specified by the kernel
 
 void disk_add_events(struct gendisk *disk)
 {
-       /* FIXME: error handling */
-       if (sysfs_create_files(&disk_to_dev(disk)->kobj, disk_events_attrs) < 0)
-               pr_warn("%s: failed to create sysfs files for events\n",
-                       disk->disk_name);
-
        if (!disk->ev)
                return;
 
                list_del_init(&disk->ev->node);
                mutex_unlock(&disk_events_mutex);
        }
-
-       sysfs_remove_files(&disk_to_dev(disk)->kobj, disk_events_attrs);
 }
 
 void disk_release_events(struct gendisk *disk)