]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
block: remove RQF_COPY_USER
authorChristoph Hellwig <hch@lst.de>
Tue, 14 Apr 2020 07:42:21 +0000 (09:42 +0200)
committerJens Axboe <axboe@kernel.dk>
Wed, 22 Apr 2020 16:47:06 +0000 (10:47 -0600)
The RQF_COPY_USER is set for bio where the passthrough request mapping
helpers decided that bounce buffering is required.  It is then used to
pad scatterlist for drivers that required it.  But given that
non-passthrough requests are per definition aligned, and directly mapped
pass-through request must be aligned it is not actually required at all.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-map.c
block/blk-merge.c
block/blk-mq-debugfs.c
include/linux/blkdev.h

index b72c361911a487ca1d2d8d320eaaa28852484232..b6fa343fea9f5624d6fbaf833b53c27c8c624e66 100644 (file)
@@ -654,8 +654,6 @@ int blk_rq_map_user_iov(struct request_queue *q, struct request *rq,
                        bio = rq->bio;
        } while (iov_iter_count(&i));
 
-       if (!bio_flagged(bio, BIO_USER_MAPPED))
-               rq->rq_flags |= RQF_COPY_USER;
        return 0;
 
 unmap_rq:
@@ -731,7 +729,6 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
 {
        int reading = rq_data_dir(rq) == READ;
        unsigned long addr = (unsigned long) kbuf;
-       int do_copy = 0;
        struct bio *bio, *orig_bio;
        int ret;
 
@@ -740,8 +737,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
        if (!len || !kbuf)
                return -EINVAL;
 
-       do_copy = !blk_rq_aligned(q, addr, len) || object_is_on_stack(kbuf);
-       if (do_copy)
+       if (!blk_rq_aligned(q, addr, len) || object_is_on_stack(kbuf))
                bio = bio_copy_kern(q, kbuf, len, gfp_mask, reading);
        else
                bio = bio_map_kern(q, kbuf, len, gfp_mask);
@@ -752,9 +748,6 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
        bio->bi_opf &= ~REQ_OP_MASK;
        bio->bi_opf |= req_op(rq);
 
-       if (do_copy)
-               rq->rq_flags |= RQF_COPY_USER;
-
        orig_bio = bio;
        ret = blk_rq_append_bio(rq, &bio);
        if (unlikely(ret)) {
index 1534ed736363fd807998525d3ddd828e566004f8..99c9759f3a8aa3c8a902632c2c74386e397f5a95 100644 (file)
@@ -532,8 +532,7 @@ int blk_rq_map_sg(struct request_queue *q, struct request *rq,
        else if (rq->bio)
                nsegs = __blk_bios_map_sg(q, rq->bio, sglist, &sg);
 
-       if (unlikely(rq->rq_flags & RQF_COPY_USER) &&
-           (blk_rq_bytes(rq) & q->dma_pad_mask)) {
+       if (blk_rq_bytes(rq) && (blk_rq_bytes(rq) & q->dma_pad_mask)) {
                unsigned int pad_len =
                        (q->dma_pad_mask & ~blk_rq_bytes(rq)) + 1;
 
index b3f2ba483992d2a1afad8a80084abfa77f26b92f..96b7a35c898a78640b011f620175bb8cafa73586 100644 (file)
@@ -292,7 +292,6 @@ static const char *const rqf_name[] = {
        RQF_NAME(MQ_INFLIGHT),
        RQF_NAME(DONTPREP),
        RQF_NAME(PREEMPT),
-       RQF_NAME(COPY_USER),
        RQF_NAME(FAILED),
        RQF_NAME(QUIET),
        RQF_NAME(ELVPRIV),
index 32868fbedc9e919f40c7b8552c3821dda8d33aed..76da162b6ae904c35d5c7e9faa702ec928f4ff49 100644 (file)
@@ -82,8 +82,6 @@ typedef __u32 __bitwise req_flags_t;
 /* set for "ide_preempt" requests and also for requests for which the SCSI
    "quiesce" state must be ignored. */
 #define RQF_PREEMPT            ((__force req_flags_t)(1 << 8))
-/* contains copies of user pages */
-#define RQF_COPY_USER          ((__force req_flags_t)(1 << 9))
 /* vaguely specified driver internal error.  Ignored by the block layer */
 #define RQF_FAILED             ((__force req_flags_t)(1 << 10))
 /* don't warn about errors */