block: remove the BIO_NULL_MAPPED flag
authorChristoph Hellwig <hch@lst.de>
Thu, 27 Aug 2020 15:37:45 +0000 (17:37 +0200)
committerJens Axboe <axboe@kernel.dk>
Tue, 1 Sep 2020 22:49:25 +0000 (16:49 -0600)
We can simply use a boolean flag in the bio_map_data data structure
instead.

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

index 6e80489..51e6195 100644 (file)
@@ -12,7 +12,8 @@
 #include "blk.h"
 
 struct bio_map_data {
-       int is_our_pages;
+       bool is_our_pages : 1;
+       bool is_null_mapped : 1;
        struct iov_iter iter;
        struct iovec iov[];
 };
@@ -108,7 +109,7 @@ static int bio_uncopy_user(struct bio *bio)
        struct bio_map_data *bmd = bio->bi_private;
        int ret = 0;
 
-       if (!bio_flagged(bio, BIO_NULL_MAPPED)) {
+       if (!bmd || !bmd->is_null_mapped) {
                /*
                 * if we're in a workqueue, the request is orphaned, so
                 * don't copy into a random user address space, just free
@@ -158,7 +159,7 @@ static struct bio *bio_copy_user_iov(struct request_queue *q,
         * The caller provided iov might point to an on-stack or otherwise
         * shortlived one.
         */
-       bmd->is_our_pages = map_data ? 0 : 1;
+       bmd->is_our_pages = !map_data;
 
        nr_pages = DIV_ROUND_UP(offset + len, PAGE_SIZE);
        if (nr_pages > BIO_MAX_PAGES)
@@ -234,7 +235,7 @@ static struct bio *bio_copy_user_iov(struct request_queue *q,
 
        bio->bi_private = bmd;
        if (map_data && map_data->null_mapped)
-               bio_set_flag(bio, BIO_NULL_MAPPED);
+               bmd->is_null_mapped = true;
        return bio;
 cleanup:
        if (!map_data)
index 5accc25..78b0739 100644 (file)
@@ -257,7 +257,6 @@ enum {
        BIO_CLONED,             /* doesn't own data */
        BIO_BOUNCED,            /* bio is a bounce bio */
        BIO_USER_MAPPED,        /* contains user pages */
-       BIO_NULL_MAPPED,        /* contains invalid user pages */
        BIO_WORKINGSET,         /* contains userspace workingset pages */
        BIO_QUIET,              /* Make BIO Quiet */
        BIO_CHAIN,              /* chained bio, ->bi_remaining in effect */