Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph...
[cascardo/linux.git] / drivers / mtd / mtd_blkdevs.c
index 646cc84..03e19c1 100644 (file)
@@ -32,6 +32,7 @@ void blktrans_dev_release(struct kref *kref)
                container_of(kref, struct mtd_blktrans_dev, ref);
 
        dev->disk->private_data = NULL;
+       blk_cleanup_queue(dev->rq);
        put_disk(dev->disk);
        list_del(&dev->list);
        kfree(dev);
@@ -379,6 +380,12 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new)
                set_disk_ro(gd, 1);
 
        add_disk(gd);
+
+       if (new->disk_attributes) {
+               ret = sysfs_create_group(&disk_to_dev(gd)->kobj,
+                                       new->disk_attributes);
+               WARN_ON(ret);
+       }
        return 0;
 error4:
        module_put(tr->owner);
@@ -405,6 +412,10 @@ int del_mtd_blktrans_dev(struct mtd_blktrans_dev *old)
        /* Stop new requests to arrive */
        del_gendisk(old->disk);
 
+       if (old->disk_attributes)
+               sysfs_remove_group(&disk_to_dev(old->disk)->kobj,
+                                               old->disk_attributes);
+
        /* Stop the thread */
        kthread_stop(old->thread);
 
@@ -413,7 +424,6 @@ int del_mtd_blktrans_dev(struct mtd_blktrans_dev *old)
        old->rq->queuedata = NULL;
        blk_start_queue(old->rq);
        spin_unlock_irqrestore(&old->queue_lock, flags);
-       blk_cleanup_queue(old->rq);
 
        /* Ask trans driver for release to the mtd device */
        mutex_lock(&old->lock);