824
825 blk_add_trace_generic(q, bio, rw, BLK_TA_GETRQ);
826out:
827 return rq;
828}
829
830
831
832
833
834
835
836static struct request *get_request_wait(struct request_queue *q, int rw_flags,
837 struct bio *bio)
838{
839 const int rw = rw_flags & 0x01;
840 struct request *rq;
841
842 rq = get_request(q, rw_flags, bio, GFP_NOIO);
843 while (!rq) {
844 DEFINE_WAIT(wait);
845 struct io_context *ioc;
846 struct request_list *rl = &q->rq;
847
848 prepare_to_wait_exclusive(&rl->wait[rw], &wait,
849 TASK_UNINTERRUPTIBLE);
850
851 blk_add_trace_generic(q, bio, rw, BLK_TA_SLEEPRQ);
852
853 __generic_unplug_device(q);
854 spin_unlock_irq(q->queue_lock);
855 io_schedule();
856
857
858
859
860
861
862
863 ioc = current_io_context(GFP_NOIO, q->node);
864 ioc_set_batching(q, ioc);