get rid of drvgen
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / mtd / mtd_blkdevs.c
index 5073cbc796d86c3a04c4f22d83b01c2f01b1d114..03e0669d8bfcf5b831eac7b4e88a41fbf6047f8b 100644 (file)
@@ -198,6 +198,7 @@ static int blktrans_open(struct block_device *bdev, fmode_t mode)
        if (!dev)
                return -ERESTARTSYS; /* FIXME: busy loop! -arnd*/
 
+       mutex_lock(&mtd_table_mutex);
        mutex_lock(&dev->lock);
 
        if (dev->open)
@@ -223,6 +224,7 @@ static int blktrans_open(struct block_device *bdev, fmode_t mode)
 unlock:
        dev->open++;
        mutex_unlock(&dev->lock);
+       mutex_unlock(&mtd_table_mutex);
        blktrans_dev_put(dev);
        return ret;
 
@@ -233,6 +235,7 @@ error_put:
        module_put(dev->tr->owner);
        kref_put(&dev->ref, blktrans_dev_release);
        mutex_unlock(&dev->lock);
+       mutex_unlock(&mtd_table_mutex);
        blktrans_dev_put(dev);
        return ret;
 }
@@ -244,6 +247,7 @@ static void blktrans_release(struct gendisk *disk, fmode_t mode)
        if (!dev)
                return;
 
+       mutex_lock(&mtd_table_mutex);
        mutex_lock(&dev->lock);
 
        if (--dev->open)
@@ -259,6 +263,7 @@ static void blktrans_release(struct gendisk *disk, fmode_t mode)
        }
 unlock:
        mutex_unlock(&dev->lock);
+       mutex_unlock(&mtd_table_mutex);
        blktrans_dev_put(dev);
 }
 
@@ -405,7 +410,9 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new)
        /* Create the request queue */
        spin_lock_init(&new->queue_lock);
        new->rq = blk_init_queue(mtd_blktrans_request, &new->queue_lock);
-
+#ifdef CONFIG_MTK_MTD_NAND
+               new->rq->backing_dev_info.ra_pages =0;
+#endif
        if (!new->rq)
                goto error3;