Lines Matching refs:rq

283 static int lo_write_simple(struct loop_device *lo, struct request *rq,  in lo_write_simple()  argument
290 rq_for_each_segment(bvec, rq, iter) { in lo_write_simple()
305 static int lo_write_transfer(struct loop_device *lo, struct request *rq, in lo_write_transfer() argument
317 rq_for_each_segment(bvec, rq, iter) { in lo_write_transfer()
335 static int lo_read_simple(struct loop_device *lo, struct request *rq, in lo_read_simple() argument
343 rq_for_each_segment(bvec, rq, iter) { in lo_read_simple()
354 __rq_for_each_bio(bio, rq) in lo_read_simple()
364 static int lo_read_transfer(struct loop_device *lo, struct request *rq, in lo_read_transfer() argument
378 rq_for_each_segment(bvec, rq, iter) { in lo_read_transfer()
402 __rq_for_each_bio(bio, rq) in lo_read_transfer()
414 static int lo_discard(struct loop_device *lo, struct request *rq, loff_t pos) in lo_discard() argument
431 ret = file->f_op->fallocate(file, mode, pos, blk_rq_bytes(rq)); in lo_discard()
438 static int lo_req_flush(struct loop_device *lo, struct request *rq) in lo_req_flush() argument
450 if (bytes < 0 || (cmd->rq->cmd_flags & REQ_WRITE)) in handle_partial_read()
453 if (unlikely(bytes < blk_rq_bytes(cmd->rq))) { in handle_partial_read()
454 struct bio *bio = cmd->rq->bio; in handle_partial_read()
464 struct request *rq = cmd->rq; in lo_rw_aio_complete() local
473 blk_mq_complete_request(rq, ret); in lo_rw_aio_complete()
481 struct bio *bio = cmd->rq->bio; in lo_rw_aio()
486 WARN_ON(cmd->rq->bio != cmd->rq->biotail); in lo_rw_aio()
490 bio_segments(bio), blk_rq_bytes(cmd->rq)); in lo_rw_aio()
515 struct request *rq, loff_t pos, bool rw) in lo_rw_simple() argument
517 struct loop_cmd *cmd = blk_mq_rq_to_pdu(rq); in lo_rw_simple()
532 return lo_write_simple(lo, rq, pos); in lo_rw_simple()
534 return lo_read_simple(lo, rq, pos); in lo_rw_simple()
537 static int do_req_filebacked(struct loop_device *lo, struct request *rq) in do_req_filebacked() argument
542 pos = ((loff_t) blk_rq_pos(rq) << 9) + lo->lo_offset; in do_req_filebacked()
544 if (rq->cmd_flags & REQ_WRITE) { in do_req_filebacked()
545 if (rq->cmd_flags & REQ_FLUSH) in do_req_filebacked()
546 ret = lo_req_flush(lo, rq); in do_req_filebacked()
547 else if (rq->cmd_flags & REQ_DISCARD) in do_req_filebacked()
548 ret = lo_discard(lo, rq, pos); in do_req_filebacked()
550 ret = lo_write_transfer(lo, rq, pos); in do_req_filebacked()
552 ret = lo_rw_simple(lo, rq, pos, WRITE); in do_req_filebacked()
556 ret = lo_read_transfer(lo, rq, pos); in do_req_filebacked()
558 ret = lo_rw_simple(lo, rq, pos, READ); in do_req_filebacked()
1654 struct loop_cmd *cmd = blk_mq_rq_to_pdu(bd->rq); in loop_queue_rq()
1655 struct loop_device *lo = cmd->rq->q->queuedata; in loop_queue_rq()
1657 blk_mq_start_request(bd->rq); in loop_queue_rq()
1662 if (lo->use_dio && !(cmd->rq->cmd_flags & (REQ_FLUSH | in loop_queue_rq()
1675 const bool write = cmd->rq->cmd_flags & REQ_WRITE; in loop_handle_cmd()
1676 struct loop_device *lo = cmd->rq->q->queuedata; in loop_handle_cmd()
1684 ret = do_req_filebacked(lo, cmd->rq); in loop_handle_cmd()
1688 blk_mq_complete_request(cmd->rq, ret ? -EIO : 0); in loop_handle_cmd()
1699 static int loop_init_request(void *data, struct request *rq, in loop_init_request() argument
1703 struct loop_cmd *cmd = blk_mq_rq_to_pdu(rq); in loop_init_request()
1705 cmd->rq = rq; in loop_init_request()