diff options
Diffstat (limited to 'block')
-rw-r--r-- | block/genhd.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/block/genhd.c b/block/genhd.c index 00da5219ee37..fda9c7a63c29 100644 --- a/block/genhd.c +++ b/block/genhd.c | |||
@@ -182,11 +182,17 @@ static int exact_lock(dev_t devt, void *data) | |||
182 | */ | 182 | */ |
183 | void add_disk(struct gendisk *disk) | 183 | void add_disk(struct gendisk *disk) |
184 | { | 184 | { |
185 | struct backing_dev_info *bdi; | ||
186 | |||
185 | disk->flags |= GENHD_FL_UP; | 187 | disk->flags |= GENHD_FL_UP; |
186 | blk_register_region(MKDEV(disk->major, disk->first_minor), | 188 | blk_register_region(MKDEV(disk->major, disk->first_minor), |
187 | disk->minors, NULL, exact_match, exact_lock, disk); | 189 | disk->minors, NULL, exact_match, exact_lock, disk); |
188 | register_disk(disk); | 190 | register_disk(disk); |
189 | blk_register_queue(disk); | 191 | blk_register_queue(disk); |
192 | |||
193 | bdi = &disk->queue->backing_dev_info; | ||
194 | bdi_register_dev(bdi, MKDEV(disk->major, disk->first_minor)); | ||
195 | sysfs_create_link(&disk->dev.kobj, &bdi->dev->kobj, "bdi"); | ||
190 | } | 196 | } |
191 | 197 | ||
192 | EXPORT_SYMBOL(add_disk); | 198 | EXPORT_SYMBOL(add_disk); |
@@ -194,6 +200,8 @@ EXPORT_SYMBOL(del_gendisk); /* in partitions/check.c */ | |||
194 | 200 | ||
195 | void unlink_gendisk(struct gendisk *disk) | 201 | void unlink_gendisk(struct gendisk *disk) |
196 | { | 202 | { |
203 | sysfs_remove_link(&disk->dev.kobj, "bdi"); | ||
204 | bdi_unregister(&disk->queue->backing_dev_info); | ||
197 | blk_unregister_queue(disk); | 205 | blk_unregister_queue(disk); |
198 | blk_unregister_region(MKDEV(disk->major, disk->first_minor), | 206 | blk_unregister_region(MKDEV(disk->major, disk->first_minor), |
199 | disk->minors); | 207 | disk->minors); |