]> git.karo-electronics.de Git - linux-beck.git/commitdiff
block: add offset in blk_add_request_payload()
authorMing Lin <ming.l@ssi.samsung.com>
Tue, 22 Mar 2016 07:24:44 +0000 (00:24 -0700)
committerJens Axboe <axboe@fb.com>
Tue, 12 Apr 2016 19:13:23 +0000 (13:13 -0600)
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>
block/blk-core.c
drivers/block/skd_main.c
drivers/scsi/sd.c
include/linux/blkdev.h

index b60537b2c35b4152343c0239374d8ba332865b09..c50227796a26cd29a892907a20c6aa5438775966 100644 (file)
@@ -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;
index 586f9168ffa4828def11d1cfed6526f8ec8ab05f..9a9ec212fab8e6f329f351ef59adb38aca75ba64 100644 (file)
@@ -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);
index f52b74cf8d1e691a10676f00c2012f809cc940f8..69b0a4a7a15f472e31884b02c46228a5b85e6314 100644 (file)
@@ -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;
 
index 669e419d62347e2965bdaffbf8e960e1e34af4f9..bbaa767570189537b5ad313d6f0a40c6395cfda7 100644 (file)
@@ -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,