Lines Matching refs:tr

76 static blk_status_t do_blktrans_request(struct mtd_blktrans_ops *tr,  in do_blktrans_request()  argument
83 block = blk_rq_pos(req) << 9 >> tr->blkshift; in do_blktrans_request()
84 nsect = blk_rq_cur_bytes(req) >> tr->blkshift; in do_blktrans_request()
87 if (tr->flush(dev)) in do_blktrans_request()
98 if (tr->discard(dev, block, nsect)) in do_blktrans_request()
103 for (; nsect > 0; nsect--, block++, buf += tr->blksize) { in do_blktrans_request()
104 if (tr->readsect(dev, block, buf)) { in do_blktrans_request()
113 if (!tr->writesect) in do_blktrans_request()
118 for (; nsect > 0; nsect--, block++, buf += tr->blksize) { in do_blktrans_request()
119 if (tr->writesect(dev, block, buf)) { in do_blktrans_request()
141 struct mtd_blktrans_ops *tr = dev->tr; in mtd_blktrans_work() local
153 if (tr->background && !background_done) { in mtd_blktrans_work()
156 tr->background(dev); in mtd_blktrans_work()
172 res = do_blktrans_request(dev->tr, dev, req); in mtd_blktrans_work()
215 __module_get(dev->tr->owner); in blktrans_open()
220 if (dev->tr->open) { in blktrans_open()
221 ret = dev->tr->open(dev); in blktrans_open()
239 if (dev->tr->release) in blktrans_open()
240 dev->tr->release(dev); in blktrans_open()
242 module_put(dev->tr->owner); in blktrans_open()
264 module_put(dev->tr->owner); in blktrans_release()
267 if (dev->tr->release) in blktrans_release()
268 dev->tr->release(dev); in blktrans_release()
290 ret = dev->tr->getgeo ? dev->tr->getgeo(dev, geo) : -ENOTTY; in blktrans_getgeo()
313 ret = dev->tr->flush ? dev->tr->flush(dev) : 0; in blktrans_ioctl()
334 struct mtd_blktrans_ops *tr = new->tr; in add_mtd_blktrans_dev() local
346 list_for_each_entry(d, &tr->devs, list) { in add_mtd_blktrans_dev()
374 if (new->devnum > (MINORMASK >> tr->part_bits) || in add_mtd_blktrans_dev()
375 (tr->part_bits && new->devnum >= 27 * 26)) { in add_mtd_blktrans_dev()
380 list_add_tail(&new->list, &tr->devs); in add_mtd_blktrans_dev()
386 if (!tr->writesect) in add_mtd_blktrans_dev()
391 gd = alloc_disk(1 << tr->part_bits); in add_mtd_blktrans_dev()
398 gd->major = tr->major; in add_mtd_blktrans_dev()
399 gd->first_minor = (new->devnum) << tr->part_bits; in add_mtd_blktrans_dev()
402 if (tr->part_bits) in add_mtd_blktrans_dev()
405 "%s%c", tr->name, 'a' + new->devnum); in add_mtd_blktrans_dev()
408 "%s%c%c", tr->name, in add_mtd_blktrans_dev()
413 "%s%d", tr->name, new->devnum); in add_mtd_blktrans_dev()
415 set_capacity(gd, ((u64)new->size * tr->blksize) >> 9); in add_mtd_blktrans_dev()
424 if (tr->flush) in add_mtd_blktrans_dev()
428 blk_queue_logical_block_size(new->rq, tr->blksize); in add_mtd_blktrans_dev()
433 if (tr->discard) { in add_mtd_blktrans_dev()
442 tr->name, new->mtd->index); in add_mtd_blktrans_dev()
497 if (old->tr->release) in del_mtd_blktrans_dev()
498 old->tr->release(old); in del_mtd_blktrans_dev()
511 struct mtd_blktrans_ops *tr; in blktrans_notify_remove() local
514 list_for_each_entry(tr, &blktrans_majors, list) in blktrans_notify_remove()
515 list_for_each_entry_safe(dev, next, &tr->devs, list) in blktrans_notify_remove()
517 tr->remove_dev(dev); in blktrans_notify_remove()
522 struct mtd_blktrans_ops *tr; in blktrans_notify_add() local
527 list_for_each_entry(tr, &blktrans_majors, list) in blktrans_notify_add()
528 tr->add_mtd(tr, mtd); in blktrans_notify_add()
536 int register_mtd_blktrans(struct mtd_blktrans_ops *tr) in register_mtd_blktrans() argument
550 ret = register_blkdev(tr->major, tr->name); in register_mtd_blktrans()
553 tr->name, tr->major, ret); in register_mtd_blktrans()
559 tr->major = ret; in register_mtd_blktrans()
561 tr->blkshift = ffs(tr->blksize) - 1; in register_mtd_blktrans()
563 INIT_LIST_HEAD(&tr->devs); in register_mtd_blktrans()
564 list_add(&tr->list, &blktrans_majors); in register_mtd_blktrans()
568 tr->add_mtd(tr, mtd); in register_mtd_blktrans()
574 int deregister_mtd_blktrans(struct mtd_blktrans_ops *tr) in deregister_mtd_blktrans() argument
581 list_del(&tr->list); in deregister_mtd_blktrans()
583 list_for_each_entry_safe(dev, next, &tr->devs, list) in deregister_mtd_blktrans()
584 tr->remove_dev(dev); in deregister_mtd_blktrans()
586 unregister_blkdev(tr->major, tr->name); in deregister_mtd_blktrans()
589 BUG_ON(!list_empty(&tr->devs)); in deregister_mtd_blktrans()