Lines Matching refs:nullb

30 struct nullb {  struct
303 static struct nullb_queue *nullb_to_queue(struct nullb *nullb) in nullb_to_queue() argument
307 if (nullb->nr_queues != 1) in nullb_to_queue()
308 index = raw_smp_processor_id() / ((nr_cpu_ids + nullb->nr_queues - 1) / nullb->nr_queues); in nullb_to_queue()
310 return &nullb->queues[index]; in nullb_to_queue()
315 struct nullb *nullb = q->queuedata; in null_queue_bio() local
316 struct nullb_queue *nq = nullb_to_queue(nullb); in null_queue_bio()
327 struct nullb *nullb = q->queuedata; in null_rq_prep_fn() local
328 struct nullb_queue *nq = nullb_to_queue(nullb); in null_rq_prep_fn()
368 static void null_init_queue(struct nullb *nullb, struct nullb_queue *nq) in null_init_queue() argument
370 BUG_ON(!nullb); in null_init_queue()
374 nq->queue_depth = nullb->queue_depth; in null_init_queue()
380 struct nullb *nullb = data; in null_init_hctx() local
381 struct nullb_queue *nq = &nullb->queues[index]; in null_init_hctx()
384 null_init_queue(nullb, nq); in null_init_hctx()
385 nullb->nr_queues++; in null_init_hctx()
397 static void null_del_dev(struct nullb *nullb) in null_del_dev() argument
399 list_del_init(&nullb->list); in null_del_dev()
401 del_gendisk(nullb->disk); in null_del_dev()
402 blk_cleanup_queue(nullb->q); in null_del_dev()
404 blk_mq_free_tag_set(&nullb->tag_set); in null_del_dev()
405 put_disk(nullb->disk); in null_del_dev()
406 kfree(nullb); in null_del_dev()
456 static void cleanup_queues(struct nullb *nullb) in cleanup_queues() argument
460 for (i = 0; i < nullb->nr_queues; i++) in cleanup_queues()
461 cleanup_queue(&nullb->queues[i]); in cleanup_queues()
463 kfree(nullb->queues); in cleanup_queues()
466 static int setup_queues(struct nullb *nullb) in setup_queues() argument
468 nullb->queues = kzalloc(submit_queues * sizeof(struct nullb_queue), in setup_queues()
470 if (!nullb->queues) in setup_queues()
473 nullb->nr_queues = 0; in setup_queues()
474 nullb->queue_depth = hw_queue_depth; in setup_queues()
479 static int init_driver_queues(struct nullb *nullb) in init_driver_queues() argument
485 nq = &nullb->queues[i]; in init_driver_queues()
487 null_init_queue(nullb, nq); in init_driver_queues()
492 nullb->nr_queues++; in init_driver_queues()
500 struct nullb *nullb; in null_add_dev() local
504 nullb = kzalloc_node(sizeof(*nullb), GFP_KERNEL, home_node); in null_add_dev()
505 if (!nullb) { in null_add_dev()
510 spin_lock_init(&nullb->lock); in null_add_dev()
515 rv = setup_queues(nullb); in null_add_dev()
520 nullb->tag_set.ops = &null_mq_ops; in null_add_dev()
521 nullb->tag_set.nr_hw_queues = submit_queues; in null_add_dev()
522 nullb->tag_set.queue_depth = hw_queue_depth; in null_add_dev()
523 nullb->tag_set.numa_node = home_node; in null_add_dev()
524 nullb->tag_set.cmd_size = sizeof(struct nullb_cmd); in null_add_dev()
525 nullb->tag_set.flags = BLK_MQ_F_SHOULD_MERGE; in null_add_dev()
526 nullb->tag_set.driver_data = nullb; in null_add_dev()
528 rv = blk_mq_alloc_tag_set(&nullb->tag_set); in null_add_dev()
532 nullb->q = blk_mq_init_queue(&nullb->tag_set); in null_add_dev()
533 if (IS_ERR(nullb->q)) { in null_add_dev()
538 nullb->q = blk_alloc_queue_node(GFP_KERNEL, home_node); in null_add_dev()
539 if (!nullb->q) { in null_add_dev()
543 blk_queue_make_request(nullb->q, null_queue_bio); in null_add_dev()
544 rv = init_driver_queues(nullb); in null_add_dev()
548 nullb->q = blk_init_queue_node(null_request_fn, &nullb->lock, home_node); in null_add_dev()
549 if (!nullb->q) { in null_add_dev()
553 blk_queue_prep_rq(nullb->q, null_rq_prep_fn); in null_add_dev()
554 blk_queue_softirq_done(nullb->q, null_softirq_done_fn); in null_add_dev()
555 rv = init_driver_queues(nullb); in null_add_dev()
560 nullb->q->queuedata = nullb; in null_add_dev()
561 queue_flag_set_unlocked(QUEUE_FLAG_NONROT, nullb->q); in null_add_dev()
562 queue_flag_clear_unlocked(QUEUE_FLAG_ADD_RANDOM, nullb->q); in null_add_dev()
564 disk = nullb->disk = alloc_disk_node(1, home_node); in null_add_dev()
571 list_add_tail(&nullb->list, &nullb_list); in null_add_dev()
572 nullb->index = nullb_indexes++; in null_add_dev()
575 blk_queue_logical_block_size(nullb->q, bs); in null_add_dev()
576 blk_queue_physical_block_size(nullb->q, bs); in null_add_dev()
584 disk->first_minor = nullb->index; in null_add_dev()
586 disk->private_data = nullb; in null_add_dev()
587 disk->queue = nullb->q; in null_add_dev()
588 sprintf(disk->disk_name, "nullb%d", nullb->index); in null_add_dev()
593 blk_cleanup_queue(nullb->q); in null_add_dev()
596 blk_mq_free_tag_set(&nullb->tag_set); in null_add_dev()
598 cleanup_queues(nullb); in null_add_dev()
600 kfree(nullb); in null_add_dev()
658 struct nullb *nullb; in null_exit() local
664 nullb = list_entry(nullb_list.next, struct nullb, list); in null_exit()
665 null_del_dev(nullb); in null_exit()