Lines Matching refs:bd
45 static unsigned int bsg_timeout(struct bsg_device *bd, struct sg_io_v4 *hdr) in bsg_timeout() argument
51 else if (bd->timeout) in bsg_timeout()
52 timeout = bd->timeout; in bsg_timeout()
57 static int bsg_sg_io(struct bsg_device *bd, fmode_t mode, void __user *uarg) in bsg_sg_io() argument
66 ret = bd->sg_io_fn(bd->queue, &hdr, mode, bsg_timeout(bd, &hdr)); in bsg_sg_io()
85 static int bsg_get_command_q(struct bsg_device *bd, int __user *uarg) in bsg_get_command_q() argument
87 return put_user(READ_ONCE(bd->max_queue), uarg); in bsg_get_command_q()
90 static int bsg_set_command_q(struct bsg_device *bd, int __user *uarg) in bsg_set_command_q() argument
98 WRITE_ONCE(bd->max_queue, max_queue); in bsg_set_command_q()
104 struct bsg_device *bd = to_bsg_device(file_inode(file)); in bsg_ioctl() local
105 struct request_queue *q = bd->queue; in bsg_ioctl()
115 return bsg_get_command_q(bd, uarg); in bsg_ioctl()
117 return bsg_set_command_q(bd, uarg); in bsg_ioctl()
131 bd->timeout = clock_t_to_jiffies(val); in bsg_ioctl()
134 return jiffies_to_clock_t(bd->timeout); in bsg_ioctl()
136 return put_user(min(bd->reserved_size, queue_max_bytes(q)), in bsg_ioctl()
143 bd->reserved_size = in bsg_ioctl()
149 return bsg_sg_io(bd, file->f_mode, uarg); in bsg_ioctl()
170 struct bsg_device *bd = container_of(dev, struct bsg_device, device); in bsg_device_release() local
172 ida_free(&bsg_minor_ida, MINOR(bd->device.devt)); in bsg_device_release()
173 kfree(bd); in bsg_device_release()
176 void bsg_unregister_queue(struct bsg_device *bd) in bsg_unregister_queue() argument
178 struct gendisk *disk = bd->queue->disk; in bsg_unregister_queue()
182 cdev_device_del(&bd->cdev, &bd->device); in bsg_unregister_queue()
183 put_device(&bd->device); in bsg_unregister_queue()
190 struct bsg_device *bd; in bsg_register_queue() local
193 bd = kzalloc(sizeof(*bd), GFP_KERNEL); in bsg_register_queue()
194 if (!bd) in bsg_register_queue()
196 bd->max_queue = BSG_DEFAULT_CMDS; in bsg_register_queue()
197 bd->reserved_size = INT_MAX; in bsg_register_queue()
198 bd->queue = q; in bsg_register_queue()
199 bd->sg_io_fn = sg_io_fn; in bsg_register_queue()
205 kfree(bd); in bsg_register_queue()
208 bd->device.devt = MKDEV(bsg_major, ret); in bsg_register_queue()
209 bd->device.class = bsg_class; in bsg_register_queue()
210 bd->device.parent = parent; in bsg_register_queue()
211 bd->device.release = bsg_device_release; in bsg_register_queue()
212 dev_set_name(&bd->device, "%s", name); in bsg_register_queue()
213 device_initialize(&bd->device); in bsg_register_queue()
215 cdev_init(&bd->cdev, &bsg_fops); in bsg_register_queue()
216 bd->cdev.owner = THIS_MODULE; in bsg_register_queue()
217 ret = cdev_device_add(&bd->cdev, &bd->device); in bsg_register_queue()
222 ret = sysfs_create_link(&q->disk->queue_kobj, &bd->device.kobj, in bsg_register_queue()
228 return bd; in bsg_register_queue()
231 cdev_device_del(&bd->cdev, &bd->device); in bsg_register_queue()
233 put_device(&bd->device); in bsg_register_queue()