Lines Matching defs:tr

78 static int do_blktrans_request(struct mtd_blktrans_ops *tr,
85 block = blk_rq_pos(req) << 9 >> tr->blkshift;
86 nsect = blk_rq_cur_bytes(req) >> tr->blkshift;
98 return tr->discard(dev, block, nsect);
102 for (; nsect > 0; nsect--, block++, buf += tr->blksize)
103 if (tr->readsect(dev, block, buf))
108 if (!tr->writesect)
112 for (; nsect > 0; nsect--, block++, buf += tr->blksize)
113 if (tr->writesect(dev, block, buf))
134 struct mtd_blktrans_ops *tr = dev->tr;
146 if (tr->background && !background_done) {
149 tr->background(dev);
173 res = do_blktrans_request(dev->tr, dev, req);
222 __module_get(dev->tr->owner);
227 if (dev->tr->open) {
228 ret = dev->tr->open(dev);
245 if (dev->tr->release)
246 dev->tr->release(dev);
248 module_put(dev->tr->owner);
269 module_put(dev->tr->owner);
272 ret = dev->tr->release ? dev->tr->release(dev) : 0;
294 ret = dev->tr->getgeo ? dev->tr->getgeo(dev, geo) : 0;
317 ret = dev->tr->flush ? dev->tr->flush(dev) : 0;
338 struct mtd_blktrans_ops *tr = new->tr;
350 list_for_each_entry(d, &tr->devs, list) {
378 if (new->devnum > (MINORMASK >> tr->part_bits) ||
379 (tr->part_bits && new->devnum >= 27 * 26)) {
384 list_add_tail(&new->list, &tr->devs);
390 if (!tr->writesect)
395 gd = alloc_disk(1 << tr->part_bits);
402 gd->major = tr->major;
403 gd->first_minor = (new->devnum) << tr->part_bits;
406 if (tr->part_bits)
409 "%s%c", tr->name, 'a' + new->devnum);
412 "%s%c%c", tr->name,
417 "%s%d", tr->name, new->devnum);
419 set_capacity(gd, (new->size * tr->blksize) >> 9);
429 blk_queue_logical_block_size(new->rq, tr->blksize);
433 if (tr->discard) {
443 "%s%d", tr->name, new->mtd->index);
501 if (old->tr->release)
502 old->tr->release(old);
515 struct mtd_blktrans_ops *tr;
518 list_for_each_entry(tr, &blktrans_majors, list)
519 list_for_each_entry_safe(dev, next, &tr->devs, list)
521 tr->remove_dev(dev);
526 struct mtd_blktrans_ops *tr;
531 list_for_each_entry(tr, &blktrans_majors, list)
532 tr->add_mtd(tr, mtd);
540 int register_mtd_blktrans(struct mtd_blktrans_ops *tr)
554 ret = register_blkdev(tr->major, tr->name);
557 tr->name, tr->major, ret);
563 tr->major = ret;
565 tr->blkshift = ffs(tr->blksize) - 1;
567 INIT_LIST_HEAD(&tr->devs);
568 list_add(&tr->list, &blktrans_majors);
572 tr->add_mtd(tr, mtd);
578 int deregister_mtd_blktrans(struct mtd_blktrans_ops *tr)
585 list_del(&tr->list);
587 list_for_each_entry_safe(dev, next, &tr->devs, list)
588 tr->remove_dev(dev);
590 unregister_blkdev(tr->major, tr->name);
593 BUG_ON(!list_empty(&tr->devs));