diff options
Diffstat (limited to 'include/linux/blkdev.h')
| -rw-r--r-- | include/linux/blkdev.h | 93 |
1 files changed, 2 insertions, 91 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 8afe3331777e..a9f6db8abcda 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
| @@ -58,9 +58,6 @@ struct blk_stat_callback; | |||
| 58 | 58 | ||
| 59 | typedef void (rq_end_io_fn)(struct request *, blk_status_t); | 59 | typedef void (rq_end_io_fn)(struct request *, blk_status_t); |
| 60 | 60 | ||
| 61 | #define BLK_RL_SYNCFULL (1U << 0) | ||
| 62 | #define BLK_RL_ASYNCFULL (1U << 1) | ||
| 63 | |||
| 64 | struct request_list { | 61 | struct request_list { |
| 65 | struct request_queue *q; /* the queue this rl belongs to */ | 62 | struct request_queue *q; /* the queue this rl belongs to */ |
| 66 | #ifdef CONFIG_BLK_CGROUP | 63 | #ifdef CONFIG_BLK_CGROUP |
| @@ -309,11 +306,8 @@ static inline unsigned short req_get_ioprio(struct request *req) | |||
| 309 | 306 | ||
| 310 | struct blk_queue_ctx; | 307 | struct blk_queue_ctx; |
| 311 | 308 | ||
| 312 | typedef void (request_fn_proc) (struct request_queue *q); | ||
| 313 | typedef blk_qc_t (make_request_fn) (struct request_queue *q, struct bio *bio); | 309 | typedef blk_qc_t (make_request_fn) (struct request_queue *q, struct bio *bio); |
| 314 | typedef bool (poll_q_fn) (struct request_queue *q, blk_qc_t); | 310 | typedef bool (poll_q_fn) (struct request_queue *q, blk_qc_t); |
| 315 | typedef int (prep_rq_fn) (struct request_queue *, struct request *); | ||
| 316 | typedef void (unprep_rq_fn) (struct request_queue *, struct request *); | ||
| 317 | 311 | ||
| 318 | struct bio_vec; | 312 | struct bio_vec; |
| 319 | typedef void (softirq_done_fn)(struct request *); | 313 | typedef void (softirq_done_fn)(struct request *); |
| @@ -432,8 +426,6 @@ struct request_queue { | |||
| 432 | struct list_head queue_head; | 426 | struct list_head queue_head; |
| 433 | struct request *last_merge; | 427 | struct request *last_merge; |
| 434 | struct elevator_queue *elevator; | 428 | struct elevator_queue *elevator; |
| 435 | int nr_rqs[2]; /* # allocated [a]sync rqs */ | ||
| 436 | int nr_rqs_elvpriv; /* # allocated rqs w/ elvpriv */ | ||
| 437 | 429 | ||
| 438 | struct blk_queue_stats *stats; | 430 | struct blk_queue_stats *stats; |
| 439 | struct rq_qos *rq_qos; | 431 | struct rq_qos *rq_qos; |
| @@ -446,11 +438,8 @@ struct request_queue { | |||
| 446 | */ | 438 | */ |
| 447 | struct request_list root_rl; | 439 | struct request_list root_rl; |
| 448 | 440 | ||
| 449 | request_fn_proc *request_fn; | ||
| 450 | make_request_fn *make_request_fn; | 441 | make_request_fn *make_request_fn; |
| 451 | poll_q_fn *poll_fn; | 442 | poll_q_fn *poll_fn; |
| 452 | prep_rq_fn *prep_rq_fn; | ||
| 453 | unprep_rq_fn *unprep_rq_fn; | ||
| 454 | softirq_done_fn *softirq_done_fn; | 443 | softirq_done_fn *softirq_done_fn; |
| 455 | rq_timed_out_fn *rq_timed_out_fn; | 444 | rq_timed_out_fn *rq_timed_out_fn; |
| 456 | dma_drain_needed_fn *dma_drain_needed; | 445 | dma_drain_needed_fn *dma_drain_needed; |
| @@ -458,8 +447,6 @@ struct request_queue { | |||
| 458 | init_rq_fn *init_rq_fn; | 447 | init_rq_fn *init_rq_fn; |
| 459 | /* Called just before a request is freed */ | 448 | /* Called just before a request is freed */ |
| 460 | exit_rq_fn *exit_rq_fn; | 449 | exit_rq_fn *exit_rq_fn; |
| 461 | /* Called from inside blk_get_request() */ | ||
| 462 | void (*initialize_rq_fn)(struct request *rq); | ||
| 463 | 450 | ||
| 464 | const struct blk_mq_ops *mq_ops; | 451 | const struct blk_mq_ops *mq_ops; |
| 465 | 452 | ||
| @@ -475,17 +462,6 @@ struct request_queue { | |||
| 475 | struct blk_mq_hw_ctx **queue_hw_ctx; | 462 | struct blk_mq_hw_ctx **queue_hw_ctx; |
| 476 | unsigned int nr_hw_queues; | 463 | unsigned int nr_hw_queues; |
| 477 | 464 | ||
| 478 | /* | ||
| 479 | * Dispatch queue sorting | ||
| 480 | */ | ||
| 481 | sector_t end_sector; | ||
| 482 | struct request *boundary_rq; | ||
| 483 | |||
| 484 | /* | ||
| 485 | * Delayed queue handling | ||
| 486 | */ | ||
| 487 | struct delayed_work delay_work; | ||
| 488 | |||
| 489 | struct backing_dev_info *backing_dev_info; | 465 | struct backing_dev_info *backing_dev_info; |
| 490 | 466 | ||
| 491 | /* | 467 | /* |
| @@ -548,9 +524,6 @@ struct request_queue { | |||
| 548 | * queue settings | 524 | * queue settings |
| 549 | */ | 525 | */ |
| 550 | unsigned long nr_requests; /* Max # of requests */ | 526 | unsigned long nr_requests; /* Max # of requests */ |
| 551 | unsigned int nr_congestion_on; | ||
| 552 | unsigned int nr_congestion_off; | ||
| 553 | unsigned int nr_batching; | ||
| 554 | 527 | ||
| 555 | unsigned int dma_drain_size; | 528 | unsigned int dma_drain_size; |
| 556 | void *dma_drain_buffer; | 529 | void *dma_drain_buffer; |
| @@ -560,13 +533,6 @@ struct request_queue { | |||
| 560 | unsigned int nr_sorted; | 533 | unsigned int nr_sorted; |
| 561 | unsigned int in_flight[2]; | 534 | unsigned int in_flight[2]; |
| 562 | 535 | ||
| 563 | /* | ||
| 564 | * Number of active block driver functions for which blk_drain_queue() | ||
| 565 | * must wait. Must be incremented around functions that unlock the | ||
| 566 | * queue_lock internally, e.g. scsi_request_fn(). | ||
| 567 | */ | ||
| 568 | unsigned int request_fn_active; | ||
| 569 | |||
| 570 | unsigned int rq_timeout; | 536 | unsigned int rq_timeout; |
| 571 | int poll_nsec; | 537 | int poll_nsec; |
| 572 | 538 | ||
| @@ -740,11 +706,6 @@ bool blk_queue_flag_test_and_clear(unsigned int flag, struct request_queue *q); | |||
| 740 | extern void blk_set_pm_only(struct request_queue *q); | 706 | extern void blk_set_pm_only(struct request_queue *q); |
| 741 | extern void blk_clear_pm_only(struct request_queue *q); | 707 | extern void blk_clear_pm_only(struct request_queue *q); |
| 742 | 708 | ||
| 743 | static inline int queue_in_flight(struct request_queue *q) | ||
| 744 | { | ||
| 745 | return q->in_flight[0] + q->in_flight[1]; | ||
| 746 | } | ||
| 747 | |||
| 748 | static inline bool blk_account_rq(struct request *rq) | 709 | static inline bool blk_account_rq(struct request *rq) |
| 749 | { | 710 | { |
| 750 | return (rq->rq_flags & RQF_STARTED) && !blk_rq_is_passthrough(rq); | 711 | return (rq->rq_flags & RQF_STARTED) && !blk_rq_is_passthrough(rq); |
| @@ -765,7 +726,7 @@ static inline bool blk_account_rq(struct request *rq) | |||
| 765 | */ | 726 | */ |
| 766 | static inline bool queue_is_rq_based(struct request_queue *q) | 727 | static inline bool queue_is_rq_based(struct request_queue *q) |
| 767 | { | 728 | { |
| 768 | return q->request_fn || q->mq_ops; | 729 | return q->mq_ops; |
| 769 | } | 730 | } |
| 770 | 731 | ||
| 771 | static inline unsigned int blk_queue_cluster(struct request_queue *q) | 732 | static inline unsigned int blk_queue_cluster(struct request_queue *q) |
| @@ -828,27 +789,6 @@ static inline bool rq_is_sync(struct request *rq) | |||
| 828 | return op_is_sync(rq->cmd_flags); | 789 | return op_is_sync(rq->cmd_flags); |
| 829 | } | 790 | } |
| 830 | 791 | ||
| 831 | static inline bool blk_rl_full(struct request_list *rl, bool sync) | ||
| 832 | { | ||
| 833 | unsigned int flag = sync ? BLK_RL_SYNCFULL : BLK_RL_ASYNCFULL; | ||
| 834 | |||
| 835 | return rl->flags & flag; | ||
| 836 | } | ||
| 837 | |||
| 838 | static inline void blk_set_rl_full(struct request_list *rl, bool sync) | ||
| 839 | { | ||
| 840 | unsigned int flag = sync ? BLK_RL_SYNCFULL : BLK_RL_ASYNCFULL; | ||
| 841 | |||
| 842 | rl->flags |= flag; | ||
| 843 | } | ||
| 844 | |||
| 845 | static inline void blk_clear_rl_full(struct request_list *rl, bool sync) | ||
| 846 | { | ||
| 847 | unsigned int flag = sync ? BLK_RL_SYNCFULL : BLK_RL_ASYNCFULL; | ||
| 848 | |||
| 849 | rl->flags &= ~flag; | ||
| 850 | } | ||
| 851 | |||
| 852 | static inline bool rq_mergeable(struct request *rq) | 792 | static inline bool rq_mergeable(struct request *rq) |
| 853 | { | 793 | { |
| 854 | if (blk_rq_is_passthrough(rq)) | 794 | if (blk_rq_is_passthrough(rq)) |
| @@ -969,7 +909,6 @@ extern void blk_put_request(struct request *); | |||
| 969 | extern void __blk_put_request(struct request_queue *, struct request *); | 909 | extern void __blk_put_request(struct request_queue *, struct request *); |
| 970 | extern struct request *blk_get_request(struct request_queue *, unsigned int op, | 910 | extern struct request *blk_get_request(struct request_queue *, unsigned int op, |
| 971 | blk_mq_req_flags_t flags); | 911 | blk_mq_req_flags_t flags); |
| 972 | extern void blk_requeue_request(struct request_queue *, struct request *); | ||
| 973 | extern int blk_lld_busy(struct request_queue *q); | 912 | extern int blk_lld_busy(struct request_queue *q); |
| 974 | extern int blk_rq_prep_clone(struct request *rq, struct request *rq_src, | 913 | extern int blk_rq_prep_clone(struct request *rq, struct request *rq_src, |
| 975 | struct bio_set *bs, gfp_t gfp_mask, | 914 | struct bio_set *bs, gfp_t gfp_mask, |
| @@ -979,7 +918,6 @@ extern void blk_rq_unprep_clone(struct request *rq); | |||
| 979 | extern blk_status_t blk_insert_cloned_request(struct request_queue *q, | 918 | extern blk_status_t blk_insert_cloned_request(struct request_queue *q, |
| 980 | struct request *rq); | 919 | struct request *rq); |
| 981 | extern int blk_rq_append_bio(struct request *rq, struct bio **bio); | 920 | extern int blk_rq_append_bio(struct request *rq, struct bio **bio); |
| 982 | extern void blk_delay_queue(struct request_queue *, unsigned long); | ||
| 983 | extern void blk_queue_split(struct request_queue *, struct bio **); | 921 | extern void blk_queue_split(struct request_queue *, struct bio **); |
| 984 | extern void blk_recount_segments(struct request_queue *, struct bio *); | 922 | extern void blk_recount_segments(struct request_queue *, struct bio *); |
| 985 | extern int scsi_verify_blk_ioctl(struct block_device *, unsigned int); | 923 | extern int scsi_verify_blk_ioctl(struct block_device *, unsigned int); |
| @@ -992,15 +930,7 @@ extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t, | |||
| 992 | 930 | ||
| 993 | extern int blk_queue_enter(struct request_queue *q, blk_mq_req_flags_t flags); | 931 | extern int blk_queue_enter(struct request_queue *q, blk_mq_req_flags_t flags); |
| 994 | extern void blk_queue_exit(struct request_queue *q); | 932 | extern void blk_queue_exit(struct request_queue *q); |
| 995 | extern void blk_start_queue(struct request_queue *q); | ||
| 996 | extern void blk_start_queue_async(struct request_queue *q); | ||
| 997 | extern void blk_stop_queue(struct request_queue *q); | ||
| 998 | extern void blk_sync_queue(struct request_queue *q); | 933 | extern void blk_sync_queue(struct request_queue *q); |
| 999 | extern void __blk_stop_queue(struct request_queue *q); | ||
| 1000 | extern void __blk_run_queue(struct request_queue *q); | ||
| 1001 | extern void __blk_run_queue_uncond(struct request_queue *q); | ||
| 1002 | extern void blk_run_queue(struct request_queue *); | ||
| 1003 | extern void blk_run_queue_async(struct request_queue *q); | ||
| 1004 | extern int blk_rq_map_user(struct request_queue *, struct request *, | 934 | extern int blk_rq_map_user(struct request_queue *, struct request *, |
| 1005 | struct rq_map_data *, void __user *, unsigned long, | 935 | struct rq_map_data *, void __user *, unsigned long, |
| 1006 | gfp_t); | 936 | gfp_t); |
| @@ -1155,13 +1085,6 @@ static inline unsigned int blk_rq_count_bios(struct request *rq) | |||
| 1155 | return nr_bios; | 1085 | return nr_bios; |
| 1156 | } | 1086 | } |
| 1157 | 1087 | ||
| 1158 | /* | ||
| 1159 | * Request issue related functions. | ||
| 1160 | */ | ||
| 1161 | extern struct request *blk_peek_request(struct request_queue *q); | ||
| 1162 | extern void blk_start_request(struct request *rq); | ||
| 1163 | extern struct request *blk_fetch_request(struct request_queue *q); | ||
| 1164 | |||
| 1165 | void blk_steal_bios(struct bio_list *list, struct request *rq); | 1088 | void blk_steal_bios(struct bio_list *list, struct request *rq); |
| 1166 | 1089 | ||
| 1167 | /* | 1090 | /* |
| @@ -1179,9 +1102,6 @@ void blk_steal_bios(struct bio_list *list, struct request *rq); | |||
| 1179 | */ | 1102 | */ |
| 1180 | extern bool blk_update_request(struct request *rq, blk_status_t error, | 1103 | extern bool blk_update_request(struct request *rq, blk_status_t error, |
| 1181 | unsigned int nr_bytes); | 1104 | unsigned int nr_bytes); |
| 1182 | extern void blk_finish_request(struct request *rq, blk_status_t error); | ||
| 1183 | extern bool blk_end_request(struct request *rq, blk_status_t error, | ||
| 1184 | unsigned int nr_bytes); | ||
| 1185 | extern void blk_end_request_all(struct request *rq, blk_status_t error); | 1105 | extern void blk_end_request_all(struct request *rq, blk_status_t error); |
| 1186 | extern bool __blk_end_request(struct request *rq, blk_status_t error, | 1106 | extern bool __blk_end_request(struct request *rq, blk_status_t error, |
| 1187 | unsigned int nr_bytes); | 1107 | unsigned int nr_bytes); |
| @@ -1190,15 +1110,10 @@ extern bool __blk_end_request_cur(struct request *rq, blk_status_t error); | |||
| 1190 | 1110 | ||
| 1191 | extern void __blk_complete_request(struct request *); | 1111 | extern void __blk_complete_request(struct request *); |
| 1192 | extern void blk_abort_request(struct request *); | 1112 | extern void blk_abort_request(struct request *); |
| 1193 | extern void blk_unprep_request(struct request *); | ||
| 1194 | 1113 | ||
| 1195 | /* | 1114 | /* |
| 1196 | * Access functions for manipulating queue properties | 1115 | * Access functions for manipulating queue properties |
| 1197 | */ | 1116 | */ |
| 1198 | extern struct request_queue *blk_init_queue_node(request_fn_proc *rfn, | ||
| 1199 | spinlock_t *lock, int node_id); | ||
| 1200 | extern struct request_queue *blk_init_queue(request_fn_proc *, spinlock_t *); | ||
| 1201 | extern int blk_init_allocated_queue(struct request_queue *); | ||
| 1202 | extern void blk_cleanup_queue(struct request_queue *); | 1117 | extern void blk_cleanup_queue(struct request_queue *); |
| 1203 | extern void blk_queue_make_request(struct request_queue *, make_request_fn *); | 1118 | extern void blk_queue_make_request(struct request_queue *, make_request_fn *); |
| 1204 | extern void blk_queue_bounce_limit(struct request_queue *, u64); | 1119 | extern void blk_queue_bounce_limit(struct request_queue *, u64); |
| @@ -1239,8 +1154,6 @@ extern int blk_queue_dma_drain(struct request_queue *q, | |||
| 1239 | void *buf, unsigned int size); | 1154 | void *buf, unsigned int size); |
| 1240 | extern void blk_queue_segment_boundary(struct request_queue *, unsigned long); | 1155 | extern void blk_queue_segment_boundary(struct request_queue *, unsigned long); |
| 1241 | extern void blk_queue_virt_boundary(struct request_queue *, unsigned long); | 1156 | extern void blk_queue_virt_boundary(struct request_queue *, unsigned long); |
| 1242 | extern void blk_queue_prep_rq(struct request_queue *, prep_rq_fn *pfn); | ||
| 1243 | extern void blk_queue_unprep_rq(struct request_queue *, unprep_rq_fn *ufn); | ||
| 1244 | extern void blk_queue_dma_alignment(struct request_queue *, int); | 1157 | extern void blk_queue_dma_alignment(struct request_queue *, int); |
| 1245 | extern void blk_queue_update_dma_alignment(struct request_queue *, int); | 1158 | extern void blk_queue_update_dma_alignment(struct request_queue *, int); |
| 1246 | extern void blk_queue_softirq_done(struct request_queue *, softirq_done_fn *); | 1159 | extern void blk_queue_softirq_done(struct request_queue *, softirq_done_fn *); |
| @@ -1298,7 +1211,6 @@ extern void blk_set_queue_dying(struct request_queue *); | |||
| 1298 | * schedule() where blk_schedule_flush_plug() is called. | 1211 | * schedule() where blk_schedule_flush_plug() is called. |
| 1299 | */ | 1212 | */ |
| 1300 | struct blk_plug { | 1213 | struct blk_plug { |
| 1301 | struct list_head list; /* requests */ | ||
| 1302 | struct list_head mq_list; /* blk-mq requests */ | 1214 | struct list_head mq_list; /* blk-mq requests */ |
| 1303 | struct list_head cb_list; /* md requires an unplug callback */ | 1215 | struct list_head cb_list; /* md requires an unplug callback */ |
| 1304 | }; | 1216 | }; |
| @@ -1339,8 +1251,7 @@ static inline bool blk_needs_flush_plug(struct task_struct *tsk) | |||
| 1339 | struct blk_plug *plug = tsk->plug; | 1251 | struct blk_plug *plug = tsk->plug; |
| 1340 | 1252 | ||
| 1341 | return plug && | 1253 | return plug && |
| 1342 | (!list_empty(&plug->list) || | 1254 | (!list_empty(&plug->mq_list) || |
| 1343 | !list_empty(&plug->mq_list) || | ||
| 1344 | !list_empty(&plug->cb_list)); | 1255 | !list_empty(&plug->cb_list)); |
| 1345 | } | 1256 | } |
| 1346 | 1257 | ||
