block: add offset in blk_add_request_payload()
We could kmalloc() the payload, so need the offset in page. Signed-off-by: Ming Lin <ming.l@ssi.samsung.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
81b76485af
commit
37e58237a1
|
@ -1523,6 +1523,7 @@ EXPORT_SYMBOL(blk_put_request);
|
|||
* blk_add_request_payload - add a payload to a request
|
||||
* @rq: request to update
|
||||
* @page: page backing the payload
|
||||
* @offset: offset in page
|
||||
* @len: length of the payload.
|
||||
*
|
||||
* This allows to later add a payload to an already submitted request by
|
||||
|
@ -1533,12 +1534,12 @@ EXPORT_SYMBOL(blk_put_request);
|
|||
* discard requests should ever use it.
|
||||
*/
|
||||
void blk_add_request_payload(struct request *rq, struct page *page,
|
||||
unsigned int len)
|
||||
int offset, unsigned int len)
|
||||
{
|
||||
struct bio *bio = rq->bio;
|
||||
|
||||
bio->bi_io_vec->bv_page = page;
|
||||
bio->bi_io_vec->bv_offset = 0;
|
||||
bio->bi_io_vec->bv_offset = offset;
|
||||
bio->bi_io_vec->bv_len = len;
|
||||
|
||||
bio->bi_iter.bi_size = len;
|
||||
|
|
|
@ -562,7 +562,7 @@ skd_prep_discard_cdb(struct skd_scsi_request *scsi_req,
|
|||
put_unaligned_be32(count, &buf[16]);
|
||||
|
||||
req = skreq->req;
|
||||
blk_add_request_payload(req, page, len);
|
||||
blk_add_request_payload(req, page, 0, len);
|
||||
}
|
||||
|
||||
static void skd_request_fn_not_online(struct request_queue *q);
|
||||
|
|
|
@ -779,7 +779,7 @@ static int sd_setup_discard_cmnd(struct scsi_cmnd *cmd)
|
|||
* discarded on disk. This allows us to report completion on the full
|
||||
* amount of blocks described by the request.
|
||||
*/
|
||||
blk_add_request_payload(rq, page, len);
|
||||
blk_add_request_payload(rq, page, 0, len);
|
||||
ret = scsi_init_io(cmd);
|
||||
rq->__data_len = nr_bytes;
|
||||
|
||||
|
|
|
@ -779,7 +779,7 @@ extern struct request *blk_make_request(struct request_queue *, struct bio *,
|
|||
extern void blk_rq_set_block_pc(struct request *);
|
||||
extern void blk_requeue_request(struct request_queue *, struct request *);
|
||||
extern void blk_add_request_payload(struct request *rq, struct page *page,
|
||||
unsigned int len);
|
||||
int offset, unsigned int len);
|
||||
extern int blk_lld_busy(struct request_queue *q);
|
||||
extern int blk_rq_prep_clone(struct request *rq, struct request *rq_src,
|
||||
struct bio_set *bs, gfp_t gfp_mask,
|
||||
|
|
Loading…
Reference in New Issue
Block a user