Lines Matching refs:rq

227 static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq,  in blk_fill_sghdr_rq()  argument
230 if (copy_from_user(rq->cmd, hdr->cmdp, hdr->cmd_len)) in blk_fill_sghdr_rq()
232 if (blk_verify_command(rq->cmd, mode & FMODE_WRITE)) in blk_fill_sghdr_rq()
238 rq->cmd_len = hdr->cmd_len; in blk_fill_sghdr_rq()
240 rq->timeout = msecs_to_jiffies(hdr->timeout); in blk_fill_sghdr_rq()
241 if (!rq->timeout) in blk_fill_sghdr_rq()
242 rq->timeout = q->sg_timeout; in blk_fill_sghdr_rq()
243 if (!rq->timeout) in blk_fill_sghdr_rq()
244 rq->timeout = BLK_DEFAULT_SG_TIMEOUT; in blk_fill_sghdr_rq()
245 if (rq->timeout < BLK_MIN_SG_TIMEOUT) in blk_fill_sghdr_rq()
246 rq->timeout = BLK_MIN_SG_TIMEOUT; in blk_fill_sghdr_rq()
251 static int blk_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr, in blk_complete_sghdr_rq() argument
259 hdr->status = rq->errors & 0xff; in blk_complete_sghdr_rq()
260 hdr->masked_status = status_byte(rq->errors); in blk_complete_sghdr_rq()
261 hdr->msg_status = msg_byte(rq->errors); in blk_complete_sghdr_rq()
262 hdr->host_status = host_byte(rq->errors); in blk_complete_sghdr_rq()
263 hdr->driver_status = driver_byte(rq->errors); in blk_complete_sghdr_rq()
267 hdr->resid = rq->resid_len; in blk_complete_sghdr_rq()
270 if (rq->sense_len && hdr->sbp) { in blk_complete_sghdr_rq()
271 int len = min((unsigned int) hdr->mx_sb_len, rq->sense_len); in blk_complete_sghdr_rq()
273 if (!copy_to_user(hdr->sbp, rq->sense, len)) in blk_complete_sghdr_rq()
293 struct request *rq; in sg_io() local
318 rq = blk_get_request(q, writing ? WRITE : READ, GFP_KERNEL); in sg_io()
319 if (IS_ERR(rq)) in sg_io()
320 return PTR_ERR(rq); in sg_io()
321 blk_rq_set_block_pc(rq); in sg_io()
324 rq->cmd = kzalloc(hdr->cmd_len, GFP_KERNEL); in sg_io()
325 if (!rq->cmd) in sg_io()
330 if (blk_fill_sghdr_rq(q, rq, hdr, mode)) in sg_io()
338 ret = import_iovec(rq_data_dir(rq), in sg_io()
347 ret = blk_rq_map_user_iov(q, rq, NULL, &i, GFP_KERNEL); in sg_io()
350 ret = blk_rq_map_user(q, rq, NULL, hdr->dxferp, hdr->dxfer_len, in sg_io()
356 bio = rq->bio; in sg_io()
358 rq->sense = sense; in sg_io()
359 rq->sense_len = 0; in sg_io()
360 rq->retries = 0; in sg_io()
368 blk_execute_rq(q, bd_disk, rq, at_head); in sg_io()
372 ret = blk_complete_sghdr_rq(rq, hdr, bio); in sg_io()
375 if (rq->cmd != rq->__cmd) in sg_io()
376 kfree(rq->cmd); in sg_io()
378 blk_put_request(rq); in sg_io()
419 struct request *rq; in sg_scsi_ioctl() local
447 rq = blk_get_request(q, in_len ? WRITE : READ, __GFP_WAIT); in sg_scsi_ioctl()
448 if (IS_ERR(rq)) { in sg_scsi_ioctl()
449 err = PTR_ERR(rq); in sg_scsi_ioctl()
452 blk_rq_set_block_pc(rq); in sg_scsi_ioctl()
460 rq->cmd_len = cmdlen; in sg_scsi_ioctl()
461 if (copy_from_user(rq->cmd, sic->data, cmdlen)) in sg_scsi_ioctl()
467 err = blk_verify_command(rq->cmd, mode & FMODE_WRITE); in sg_scsi_ioctl()
472 rq->retries = 5; in sg_scsi_ioctl()
477 rq->timeout = FORMAT_UNIT_TIMEOUT; in sg_scsi_ioctl()
478 rq->retries = 1; in sg_scsi_ioctl()
481 rq->timeout = START_STOP_TIMEOUT; in sg_scsi_ioctl()
484 rq->timeout = MOVE_MEDIUM_TIMEOUT; in sg_scsi_ioctl()
487 rq->timeout = READ_ELEMENT_STATUS_TIMEOUT; in sg_scsi_ioctl()
490 rq->timeout = READ_DEFECT_DATA_TIMEOUT; in sg_scsi_ioctl()
491 rq->retries = 1; in sg_scsi_ioctl()
494 rq->timeout = BLK_DEFAULT_SG_TIMEOUT; in sg_scsi_ioctl()
498 if (bytes && blk_rq_map_kern(q, rq, buffer, bytes, __GFP_WAIT)) { in sg_scsi_ioctl()
504 rq->sense = sense; in sg_scsi_ioctl()
505 rq->sense_len = 0; in sg_scsi_ioctl()
507 blk_execute_rq(q, disk, rq, 0); in sg_scsi_ioctl()
509 err = rq->errors & 0xff; /* only 8 bit SCSI status */ in sg_scsi_ioctl()
511 if (rq->sense_len && rq->sense) { in sg_scsi_ioctl()
512 bytes = (OMAX_SB_LEN > rq->sense_len) ? in sg_scsi_ioctl()
513 rq->sense_len : OMAX_SB_LEN; in sg_scsi_ioctl()
514 if (copy_to_user(sic->data, rq->sense, bytes)) in sg_scsi_ioctl()
523 blk_put_request(rq); in sg_scsi_ioctl()
536 struct request *rq; in __blk_send_generic() local
539 rq = blk_get_request(q, WRITE, __GFP_WAIT); in __blk_send_generic()
540 if (IS_ERR(rq)) in __blk_send_generic()
541 return PTR_ERR(rq); in __blk_send_generic()
542 blk_rq_set_block_pc(rq); in __blk_send_generic()
543 rq->timeout = BLK_DEFAULT_SG_TIMEOUT; in __blk_send_generic()
544 rq->cmd[0] = cmd; in __blk_send_generic()
545 rq->cmd[4] = data; in __blk_send_generic()
546 rq->cmd_len = 6; in __blk_send_generic()
547 err = blk_execute_rq(q, bd_disk, rq, 0); in __blk_send_generic()
548 blk_put_request(rq); in __blk_send_generic()