Lines Matching refs:new

276 int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new)
278 struct mtd_blktrans_ops *tr = new->tr;
288 if (new->devnum == -1) {
292 new->devnum = last_devnum+1;
293 list_add_tail(&new->list, &d->list);
296 } else if (d->devnum == new->devnum) {
299 } else if (d->devnum > new->devnum) {
301 list_add_tail(&new->list, &d->list);
308 if (new->devnum == -1)
309 new->devnum = last_devnum+1;
314 if (new->devnum > (MINORMASK >> tr->part_bits) ||
315 (tr->part_bits && new->devnum >= 27 * 26))
318 list_add_tail(&new->list, &tr->devs);
321 mutex_init(&new->lock);
322 kref_init(&new->ref);
324 new->readonly = 1;
327 new->tag_set = kzalloc(sizeof(*new->tag_set), GFP_KERNEL);
328 if (!new->tag_set)
331 ret = blk_mq_alloc_sq_tag_set(new->tag_set, &mtd_mq_ops, 2,
341 gd = blk_mq_alloc_disk(new->tag_set, &lim, new);
347 new->disk = gd;
348 new->rq = new->disk->queue;
349 gd->private_data = new;
351 gd->first_minor = (new->devnum) << tr->part_bits;
356 if (new->devnum < 26)
358 "%s%c", tr->name, 'a' + new->devnum);
362 'a' - 1 + new->devnum / 26,
363 'a' + new->devnum % 26);
366 "%s%d", tr->name, new->devnum);
370 set_capacity(gd, ((u64)new->size * tr->blksize) >> 9);
373 spin_lock_init(&new->queue_lock);
374 INIT_LIST_HEAD(&new->rq_list);
377 blk_queue_write_cache(new->rq, true, false);
379 blk_queue_flag_set(QUEUE_FLAG_NONROT, new->rq);
380 blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, new->rq);
382 gd->queue = new->rq;
384 if (new->readonly)
387 ret = device_add_disk(&new->mtd->dev, gd, NULL);
391 if (new->disk_attributes) {
393 new->disk_attributes);
399 put_disk(new->disk);
401 blk_mq_free_tag_set(new->tag_set);
403 kfree(new->tag_set);
405 list_del(&new->list);
419 /* Stop new requests to arrive */