mirror of https://github.com/torvalds/linux.git
block: cleanup bio_issue
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>
This commit is contained in:
parent
79b24810a2
commit
1733e88874
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 &&
|
||||
|
|
|
|||
42
block/blk.h
42
block/blk.h
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue