Lines Matching refs:bdev

146 static bool scm_permit_request(struct scm_blk_dev *bdev, struct request *req)
148 return rq_data_dir(req) != WRITE || bdev->state != SCM_WR_PROHIBIT;
181 struct scm_blk_dev *bdev = scmrq->bdev;
182 struct scm_device *scmdev = bdev->gendisk->private_data;
218 static inline void scm_request_init(struct scm_blk_dev *bdev,
227 aobrq->scmdev = bdev->scmdev;
230 scmrq->bdev = bdev;
239 struct scm_blk_dev *bdev = scmrq->bdev;
245 atomic_dec(&bdev->queued_reqs);
247 blk_mq_kick_requeue_list(bdev->rq);
252 struct scm_blk_dev *bdev = scmrq->bdev;
263 atomic_dec(&bdev->queued_reqs);
269 struct scm_blk_dev *bdev = scmrq->bdev;
271 atomic_inc(&bdev->queued_reqs);
287 struct scm_blk_dev *bdev = dev_get_drvdata(&scmdev->dev);
293 if (!scm_permit_request(bdev, req)) {
306 scm_request_init(bdev, scmrq);
374 struct scm_blk_dev *bdev = scmrq->bdev;
383 spin_lock_irqsave(&bdev->lock, flags);
384 if (bdev->state != SCM_WR_PROHIBIT)
386 (unsigned long) bdev->scmdev->address);
387 bdev->state = SCM_WR_PROHIBIT;
388 spin_unlock_irqrestore(&bdev->lock, flags);
436 int scm_blk_dev_setup(struct scm_blk_dev *bdev, struct scm_device *scmdev)
456 bdev->scmdev = scmdev;
457 bdev->state = SCM_OPER;
458 spin_lock_init(&bdev->lock);
459 atomic_set(&bdev->queued_reqs, 0);
461 bdev->tag_set.ops = &scm_mq_ops;
462 bdev->tag_set.cmd_size = sizeof(blk_status_t);
463 bdev->tag_set.nr_hw_queues = nr_requests;
464 bdev->tag_set.queue_depth = nr_requests_per_io * nr_requests;
465 bdev->tag_set.flags = BLK_MQ_F_SHOULD_MERGE;
466 bdev->tag_set.numa_node = NUMA_NO_NODE;
468 ret = blk_mq_alloc_tag_set(&bdev->tag_set);
472 bdev->gendisk = blk_mq_alloc_disk(&bdev->tag_set, &lim, scmdev);
473 if (IS_ERR(bdev->gendisk)) {
474 ret = PTR_ERR(bdev->gendisk);
477 rq = bdev->rq = bdev->gendisk->queue;
481 bdev->gendisk->private_data = scmdev;
482 bdev->gendisk->fops = &scm_blk_devops;
483 bdev->gendisk->major = scm_major;
484 bdev->gendisk->first_minor = devindex * SCM_NR_PARTS;
485 bdev->gendisk->minors = SCM_NR_PARTS;
487 len = snprintf(bdev->gendisk->disk_name, DISK_NAME_LEN, "scm");
489 len += snprintf(bdev->gendisk->disk_name + len,
494 snprintf(bdev->gendisk->disk_name + len, DISK_NAME_LEN - len, "%c",
498 set_capacity(bdev->gendisk, scmdev->size >> 9);
499 ret = device_add_disk(&scmdev->dev, bdev->gendisk, NULL);
506 put_disk(bdev->gendisk);
508 blk_mq_free_tag_set(&bdev->tag_set);
514 void scm_blk_dev_cleanup(struct scm_blk_dev *bdev)
516 del_gendisk(bdev->gendisk);
517 put_disk(bdev->gendisk);
518 blk_mq_free_tag_set(&bdev->tag_set);
521 void scm_blk_set_available(struct scm_blk_dev *bdev)
525 spin_lock_irqsave(&bdev->lock, flags);
526 if (bdev->state == SCM_WR_PROHIBIT)
528 (unsigned long) bdev->scmdev->address);
529 bdev->state = SCM_OPER;
530 spin_unlock_irqrestore(&bdev->lock, flags);