diff options
author | Jens Axboe <axboe@kernel.dk> | 2018-01-10 19:34:25 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2018-01-10 19:47:53 +0100 |
commit | e14575b3d457f5806d79b85886ef94d9c29e3b2a (patch) | |
tree | bf1a6137b1e38ece55196da485e5c97bdc711ea4 /block/blk.h | |
parent | block: add accessors for setting/querying request deadline (diff) | |
download | linux-e14575b3d457f5806d79b85886ef94d9c29e3b2a.tar.xz linux-e14575b3d457f5806d79b85886ef94d9c29e3b2a.zip |
block: convert REQ_ATOM_COMPLETE to stealing rq->__deadline bit
We only have one atomic flag left. Instead of using an entire
unsigned long for that, steal the bottom bit of the deadline
field that we already reserved.
Remove ->atomic_flags, since it's now unused.
Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com>
Reviewed-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/blk.h')
-rw-r--r-- | block/blk.h | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/block/blk.h b/block/blk.h index bcd9cf7db0d4..c84ae0e21ebd 100644 --- a/block/blk.h +++ b/block/blk.h @@ -120,24 +120,23 @@ void blk_account_io_completion(struct request *req, unsigned int bytes); void blk_account_io_done(struct request *req); /* - * Internal atomic flags for request handling - */ -enum rq_atomic_flags { - REQ_ATOM_COMPLETE = 0, -}; - -/* * EH timer and IO completion will both attempt to 'grab' the request, make - * sure that only one of them succeeds + * sure that only one of them succeeds. Steal the bottom bit of the + * __deadline field for this. */ static inline int blk_mark_rq_complete(struct request *rq) { - return test_and_set_bit(REQ_ATOM_COMPLETE, &rq->atomic_flags); + return test_and_set_bit(0, &rq->__deadline); } static inline void blk_clear_rq_complete(struct request *rq) { - clear_bit(REQ_ATOM_COMPLETE, &rq->atomic_flags); + clear_bit(0, &rq->__deadline); +} + +static inline bool blk_rq_is_complete(struct request *rq) +{ + return test_bit(0, &rq->__deadline); } /* |