]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
block: cleanup bio_issue
authorYu Kuai <yukuai3@huawei.com>
Wed, 10 Sep 2025 06:30:41 +0000 (14:30 +0800)
committerJens Axboe <axboe@kernel.dk>
Wed, 10 Sep 2025 11:23:45 +0000 (05:23 -0600)
Now that bio->bi_issue is only used by blk-iolatency to get bio issue
time, replace bio_issue with u64 time directly and remove bio_issue to
make code cleaner.

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bio.c
block/blk-cgroup.h
block/blk-iolatency.c
block/blk.h
include/linux/blk_types.h

index 9603ca3ec77043337cb3889c4e9d0084d00ef986..3a1a848940ddbe1ba2d7049e3396439691f9bcd9 100644 (file)
@@ -261,7 +261,7 @@ void bio_init(struct bio *bio, struct block_device *bdev, struct bio_vec *table,
        bio->bi_private = NULL;
 #ifdef CONFIG_BLK_CGROUP
        bio->bi_blkg = NULL;
-       bio->bi_issue.value = 0;
+       bio->issue_time_ns = 0;
        if (bdev)
                bio_associate_blkg(bio);
 #ifdef CONFIG_BLK_CGROUP_IOCOST
index 83367086cb6ae3fd6599a46b7ee08715866accc3..8328427e31657443910b835e22a932510aa403c4 100644 (file)
@@ -372,7 +372,7 @@ static inline void blkg_put(struct blkcg_gq *blkg)
 
 static inline void blkcg_bio_issue_init(struct bio *bio)
 {
-       bio_issue_init(&bio->bi_issue, bio_sectors(bio));
+       bio->issue_time_ns = blk_time_get_ns();
 }
 
 static inline void blkcg_use_delay(struct blkcg_gq *blkg)
index 2f8fdecdd7a9b1994ebe1b510c4160094326211e..554b191a68921c1076abdd910c81d66e4cbf3bed 100644 (file)
@@ -485,19 +485,11 @@ static void blkcg_iolatency_throttle(struct rq_qos *rqos, struct bio *bio)
                mod_timer(&blkiolat->timer, jiffies + HZ);
 }
 
-static void iolatency_record_time(struct iolatency_grp *iolat,
-                                 struct bio_issue *issue, u64 now,
-                                 bool issue_as_root)
+static void iolatency_record_time(struct iolatency_grp *iolat, u64 start,
+                                 u64 now, bool issue_as_root)
 {
-       u64 start = bio_issue_time(issue);
        u64 req_time;
 
-       /*
-        * Have to do this so we are truncated to the correct time that our
-        * issue is truncated to.
-        */
-       now = __bio_issue_time(now);
-
        if (now <= start)
                return;
 
@@ -625,7 +617,7 @@ static void blkcg_iolatency_done_bio(struct rq_qos *rqos, struct bio *bio)
                 * submitted, so do not account for it.
                 */
                if (iolat->min_lat_nsec && bio->bi_status != BLK_STS_AGAIN) {
-                       iolatency_record_time(iolat, &bio->bi_issue, now,
+                       iolatency_record_time(iolat, bio->issue_time_ns, now,
                                              issue_as_root);
                        window_start = atomic64_read(&iolat->window_start);
                        if (now > window_start &&
index 7d420c247d810b5336806ca7fe14601d3d171b4b..41397688b941a2160543316db71bfc6e68298f05 100644 (file)
@@ -681,48 +681,6 @@ static inline ktime_t blk_time_get(void)
        return ns_to_ktime(blk_time_get_ns());
 }
 
-/*
- * From most significant bit:
- * 1 bit: reserved for other usage, see below
- * 12 bits: original size of bio
- * 51 bits: issue time of bio
- */
-#define BIO_ISSUE_RES_BITS      1
-#define BIO_ISSUE_SIZE_BITS     12
-#define BIO_ISSUE_RES_SHIFT     (64 - BIO_ISSUE_RES_BITS)
-#define BIO_ISSUE_SIZE_SHIFT    (BIO_ISSUE_RES_SHIFT - BIO_ISSUE_SIZE_BITS)
-#define BIO_ISSUE_TIME_MASK     ((1ULL << BIO_ISSUE_SIZE_SHIFT) - 1)
-#define BIO_ISSUE_SIZE_MASK     \
-       (((1ULL << BIO_ISSUE_SIZE_BITS) - 1) << BIO_ISSUE_SIZE_SHIFT)
-#define BIO_ISSUE_RES_MASK      (~((1ULL << BIO_ISSUE_RES_SHIFT) - 1))
-
-/* Reserved bit for blk-throtl */
-#define BIO_ISSUE_THROTL_SKIP_LATENCY (1ULL << 63)
-
-static inline u64 __bio_issue_time(u64 time)
-{
-       return time & BIO_ISSUE_TIME_MASK;
-}
-
-static inline u64 bio_issue_time(struct bio_issue *issue)
-{
-       return __bio_issue_time(issue->value);
-}
-
-static inline sector_t bio_issue_size(struct bio_issue *issue)
-{
-       return ((issue->value & BIO_ISSUE_SIZE_MASK) >> BIO_ISSUE_SIZE_SHIFT);
-}
-
-static inline void bio_issue_init(struct bio_issue *issue,
-                                      sector_t size)
-{
-       size &= (1ULL << BIO_ISSUE_SIZE_BITS) - 1;
-       issue->value = ((issue->value & BIO_ISSUE_RES_MASK) |
-                       (blk_time_get_ns() & BIO_ISSUE_TIME_MASK) |
-                       ((u64)size << BIO_ISSUE_SIZE_SHIFT));
-}
-
 void bdev_release(struct file *bdev_file);
 int bdev_open(struct block_device *bdev, blk_mode_t mode, void *holder,
              const struct blk_holder_ops *hops, struct file *bdev_file);
index 4bd098fd61cb01f3be3ad67dc59f416232c3bafd..8e8d1cc8b06c4c09c82ec3bff19090250ea773a6 100644 (file)
@@ -198,10 +198,6 @@ static inline bool blk_path_error(blk_status_t error)
        return true;
 }
 
-struct bio_issue {
-       u64 value;
-};
-
 typedef __u32 __bitwise blk_opf_t;
 
 typedef unsigned int blk_qc_t;
@@ -242,7 +238,8 @@ struct bio {
         * on release of the bio.
         */
        struct blkcg_gq         *bi_blkg;
-       struct bio_issue        bi_issue;
+       /* Time that this bio was issued. */
+       u64                     issue_time_ns;
 #ifdef CONFIG_BLK_CGROUP_IOCOST
        u64                     bi_iocost_cost;
 #endif