Skip to content

Commit ba568ea

Browse files
Mike Christieaxboe
authored andcommitted
block: prepare elevator to use REQ_OPs.
This patch converts the elevator code to use separate variables for the operation and flags, and to check req_op for the REQ_OP. Signed-off-by: Mike Christie <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Reviewed-by: Hannes Reinecke <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
1 parent cc6e3b1 commit ba568ea

File tree

4 files changed

+8
-9
lines changed

4 files changed

+8
-9
lines changed

block/blk-core.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1081,7 +1081,7 @@ static struct request *__get_request(struct request_list *rl, int op,
10811081
if (unlikely(blk_queue_dying(q)))
10821082
return ERR_PTR(-ENODEV);
10831083

1084-
may_queue = elv_may_queue(q, op | op_flags);
1084+
may_queue = elv_may_queue(q, op, op_flags);
10851085
if (may_queue == ELV_MQUEUE_NO)
10861086
goto rq_starved;
10871087

block/cfq-iosched.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4285,7 +4285,7 @@ static inline int __cfq_may_queue(struct cfq_queue *cfqq)
42854285
return ELV_MQUEUE_MAY;
42864286
}
42874287

4288-
static int cfq_may_queue(struct request_queue *q, int rw)
4288+
static int cfq_may_queue(struct request_queue *q, int op, int op_flags)
42894289
{
42904290
struct cfq_data *cfqd = q->elevator->elevator_data;
42914291
struct task_struct *tsk = current;
@@ -4302,7 +4302,7 @@ static int cfq_may_queue(struct request_queue *q, int rw)
43024302
if (!cic)
43034303
return ELV_MQUEUE_MAY;
43044304

4305-
cfqq = cic_to_cfqq(cic, rw_is_sync(rw));
4305+
cfqq = cic_to_cfqq(cic, rw_is_sync(op | op_flags));
43064306
if (cfqq) {
43074307
cfq_init_prio_data(cfqq, cic);
43084308

block/elevator.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -366,8 +366,7 @@ void elv_dispatch_sort(struct request_queue *q, struct request *rq)
366366
list_for_each_prev(entry, &q->queue_head) {
367367
struct request *pos = list_entry_rq(entry);
368368

369-
if ((rq->cmd_flags & REQ_DISCARD) !=
370-
(pos->cmd_flags & REQ_DISCARD))
369+
if ((req_op(rq) == REQ_OP_DISCARD) != (req_op(pos) == REQ_OP_DISCARD))
371370
break;
372371
if (rq_data_dir(rq) != rq_data_dir(pos))
373372
break;
@@ -717,12 +716,12 @@ void elv_put_request(struct request_queue *q, struct request *rq)
717716
e->type->ops.elevator_put_req_fn(rq);
718717
}
719718

720-
int elv_may_queue(struct request_queue *q, int rw)
719+
int elv_may_queue(struct request_queue *q, int op, int op_flags)
721720
{
722721
struct elevator_queue *e = q->elevator;
723722

724723
if (e->type->ops.elevator_may_queue_fn)
725-
return e->type->ops.elevator_may_queue_fn(q, rw);
724+
return e->type->ops.elevator_may_queue_fn(q, op, op_flags);
726725

727726
return ELV_MQUEUE_MAY;
728727
}

include/linux/elevator.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ typedef int (elevator_dispatch_fn) (struct request_queue *, int);
2626
typedef void (elevator_add_req_fn) (struct request_queue *, struct request *);
2727
typedef struct request *(elevator_request_list_fn) (struct request_queue *, struct request *);
2828
typedef void (elevator_completed_req_fn) (struct request_queue *, struct request *);
29-
typedef int (elevator_may_queue_fn) (struct request_queue *, int);
29+
typedef int (elevator_may_queue_fn) (struct request_queue *, int, int);
3030

3131
typedef void (elevator_init_icq_fn) (struct io_cq *);
3232
typedef void (elevator_exit_icq_fn) (struct io_cq *);
@@ -134,7 +134,7 @@ extern struct request *elv_former_request(struct request_queue *, struct request
134134
extern struct request *elv_latter_request(struct request_queue *, struct request *);
135135
extern int elv_register_queue(struct request_queue *q);
136136
extern void elv_unregister_queue(struct request_queue *q);
137-
extern int elv_may_queue(struct request_queue *, int);
137+
extern int elv_may_queue(struct request_queue *, int, int);
138138
extern void elv_completed_request(struct request_queue *, struct request *);
139139
extern int elv_set_request(struct request_queue *q, struct request *rq,
140140
struct bio *bio, gfp_t gfp_mask);

0 commit comments

Comments
 (0)