Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/block/blk-core.c
15109 views
1
/*
2
* Copyright (C) 1991, 1992 Linus Torvalds
3
* Copyright (C) 1994, Karl Keyte: Added support for disk statistics
4
* Elevator latency, (C) 2000 Andrea Arcangeli <[email protected]> SuSE
5
* Queue request tables / lock, selectable elevator, Jens Axboe <[email protected]>
6
* kernel-doc documentation started by NeilBrown <[email protected]>
7
* - July2000
8
* bio rewrite, highmem i/o, etc, Jens Axboe <[email protected]> - may 2001
9
*/
10
11
/*
12
* This handles all read/write requests to block devices
13
*/
14
#include <linux/kernel.h>
15
#include <linux/module.h>
16
#include <linux/backing-dev.h>
17
#include <linux/bio.h>
18
#include <linux/blkdev.h>
19
#include <linux/highmem.h>
20
#include <linux/mm.h>
21
#include <linux/kernel_stat.h>
22
#include <linux/string.h>
23
#include <linux/init.h>
24
#include <linux/completion.h>
25
#include <linux/slab.h>
26
#include <linux/swap.h>
27
#include <linux/writeback.h>
28
#include <linux/task_io_accounting_ops.h>
29
#include <linux/fault-inject.h>
30
#include <linux/list_sort.h>
31
32
#define CREATE_TRACE_POINTS
33
#include <trace/events/block.h>
34
35
#include "blk.h"
36
37
EXPORT_TRACEPOINT_SYMBOL_GPL(block_bio_remap);
38
EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_remap);
39
EXPORT_TRACEPOINT_SYMBOL_GPL(block_bio_complete);
40
41
static int __make_request(struct request_queue *q, struct bio *bio);
42
43
/*
44
* For the allocated request tables
45
*/
46
static struct kmem_cache *request_cachep;
47
48
/*
49
* For queue allocation
50
*/
51
struct kmem_cache *blk_requestq_cachep;
52
53
/*
54
* Controlling structure to kblockd
55
*/
56
static struct workqueue_struct *kblockd_workqueue;
57
58
static void drive_stat_acct(struct request *rq, int new_io)
59
{
60
struct hd_struct *part;
61
int rw = rq_data_dir(rq);
62
int cpu;
63
64
if (!blk_do_io_stat(rq))
65
return;
66
67
cpu = part_stat_lock();
68
69
if (!new_io) {
70
part = rq->part;
71
part_stat_inc(cpu, part, merges[rw]);
72
} else {
73
part = disk_map_sector_rcu(rq->rq_disk, blk_rq_pos(rq));
74
if (!hd_struct_try_get(part)) {
75
/*
76
* The partition is already being removed,
77
* the request will be accounted on the disk only
78
*
79
* We take a reference on disk->part0 although that
80
* partition will never be deleted, so we can treat
81
* it as any other partition.
82
*/
83
part = &rq->rq_disk->part0;
84
hd_struct_get(part);
85
}
86
part_round_stats(cpu, part);
87
part_inc_in_flight(part, rw);
88
rq->part = part;
89
}
90
91
part_stat_unlock();
92
}
93
94
void blk_queue_congestion_threshold(struct request_queue *q)
95
{
96
int nr;
97
98
nr = q->nr_requests - (q->nr_requests / 8) + 1;
99
if (nr > q->nr_requests)
100
nr = q->nr_requests;
101
q->nr_congestion_on = nr;
102
103
nr = q->nr_requests - (q->nr_requests / 8) - (q->nr_requests / 16) - 1;
104
if (nr < 1)
105
nr = 1;
106
q->nr_congestion_off = nr;
107
}
108
109
/**
110
* blk_get_backing_dev_info - get the address of a queue's backing_dev_info
111
* @bdev: device
112
*
113
* Locates the passed device's request queue and returns the address of its
114
* backing_dev_info
115
*
116
* Will return NULL if the request queue cannot be located.
117
*/
118
struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev)
119
{
120
struct backing_dev_info *ret = NULL;
121
struct request_queue *q = bdev_get_queue(bdev);
122
123
if (q)
124
ret = &q->backing_dev_info;
125
return ret;
126
}
127
EXPORT_SYMBOL(blk_get_backing_dev_info);
128
129
void blk_rq_init(struct request_queue *q, struct request *rq)
130
{
131
memset(rq, 0, sizeof(*rq));
132
133
INIT_LIST_HEAD(&rq->queuelist);
134
INIT_LIST_HEAD(&rq->timeout_list);
135
rq->cpu = -1;
136
rq->q = q;
137
rq->__sector = (sector_t) -1;
138
INIT_HLIST_NODE(&rq->hash);
139
RB_CLEAR_NODE(&rq->rb_node);
140
rq->cmd = rq->__cmd;
141
rq->cmd_len = BLK_MAX_CDB;
142
rq->tag = -1;
143
rq->ref_count = 1;
144
rq->start_time = jiffies;
145
set_start_time_ns(rq);
146
rq->part = NULL;
147
}
148
EXPORT_SYMBOL(blk_rq_init);
149
150
static void req_bio_endio(struct request *rq, struct bio *bio,
151
unsigned int nbytes, int error)
152
{
153
if (error)
154
clear_bit(BIO_UPTODATE, &bio->bi_flags);
155
else if (!test_bit(BIO_UPTODATE, &bio->bi_flags))
156
error = -EIO;
157
158
if (unlikely(nbytes > bio->bi_size)) {
159
printk(KERN_ERR "%s: want %u bytes done, %u left\n",
160
__func__, nbytes, bio->bi_size);
161
nbytes = bio->bi_size;
162
}
163
164
if (unlikely(rq->cmd_flags & REQ_QUIET))
165
set_bit(BIO_QUIET, &bio->bi_flags);
166
167
bio->bi_size -= nbytes;
168
bio->bi_sector += (nbytes >> 9);
169
170
if (bio_integrity(bio))
171
bio_integrity_advance(bio, nbytes);
172
173
/* don't actually finish bio if it's part of flush sequence */
174
if (bio->bi_size == 0 && !(rq->cmd_flags & REQ_FLUSH_SEQ))
175
bio_endio(bio, error);
176
}
177
178
void blk_dump_rq_flags(struct request *rq, char *msg)
179
{
180
int bit;
181
182
printk(KERN_INFO "%s: dev %s: type=%x, flags=%x\n", msg,
183
rq->rq_disk ? rq->rq_disk->disk_name : "?", rq->cmd_type,
184
rq->cmd_flags);
185
186
printk(KERN_INFO " sector %llu, nr/cnr %u/%u\n",
187
(unsigned long long)blk_rq_pos(rq),
188
blk_rq_sectors(rq), blk_rq_cur_sectors(rq));
189
printk(KERN_INFO " bio %p, biotail %p, buffer %p, len %u\n",
190
rq->bio, rq->biotail, rq->buffer, blk_rq_bytes(rq));
191
192
if (rq->cmd_type == REQ_TYPE_BLOCK_PC) {
193
printk(KERN_INFO " cdb: ");
194
for (bit = 0; bit < BLK_MAX_CDB; bit++)
195
printk("%02x ", rq->cmd[bit]);
196
printk("\n");
197
}
198
}
199
EXPORT_SYMBOL(blk_dump_rq_flags);
200
201
static void blk_delay_work(struct work_struct *work)
202
{
203
struct request_queue *q;
204
205
q = container_of(work, struct request_queue, delay_work.work);
206
spin_lock_irq(q->queue_lock);
207
__blk_run_queue(q);
208
spin_unlock_irq(q->queue_lock);
209
}
210
211
/**
212
* blk_delay_queue - restart queueing after defined interval
213
* @q: The &struct request_queue in question
214
* @msecs: Delay in msecs
215
*
216
* Description:
217
* Sometimes queueing needs to be postponed for a little while, to allow
218
* resources to come back. This function will make sure that queueing is
219
* restarted around the specified time.
220
*/
221
void blk_delay_queue(struct request_queue *q, unsigned long msecs)
222
{
223
queue_delayed_work(kblockd_workqueue, &q->delay_work,
224
msecs_to_jiffies(msecs));
225
}
226
EXPORT_SYMBOL(blk_delay_queue);
227
228
/**
229
* blk_start_queue - restart a previously stopped queue
230
* @q: The &struct request_queue in question
231
*
232
* Description:
233
* blk_start_queue() will clear the stop flag on the queue, and call
234
* the request_fn for the queue if it was in a stopped state when
235
* entered. Also see blk_stop_queue(). Queue lock must be held.
236
**/
237
void blk_start_queue(struct request_queue *q)
238
{
239
WARN_ON(!irqs_disabled());
240
241
queue_flag_clear(QUEUE_FLAG_STOPPED, q);
242
__blk_run_queue(q);
243
}
244
EXPORT_SYMBOL(blk_start_queue);
245
246
/**
247
* blk_stop_queue - stop a queue
248
* @q: The &struct request_queue in question
249
*
250
* Description:
251
* The Linux block layer assumes that a block driver will consume all
252
* entries on the request queue when the request_fn strategy is called.
253
* Often this will not happen, because of hardware limitations (queue
254
* depth settings). If a device driver gets a 'queue full' response,
255
* or if it simply chooses not to queue more I/O at one point, it can
256
* call this function to prevent the request_fn from being called until
257
* the driver has signalled it's ready to go again. This happens by calling
258
* blk_start_queue() to restart queue operations. Queue lock must be held.
259
**/
260
void blk_stop_queue(struct request_queue *q)
261
{
262
__cancel_delayed_work(&q->delay_work);
263
queue_flag_set(QUEUE_FLAG_STOPPED, q);
264
}
265
EXPORT_SYMBOL(blk_stop_queue);
266
267
/**
268
* blk_sync_queue - cancel any pending callbacks on a queue
269
* @q: the queue
270
*
271
* Description:
272
* The block layer may perform asynchronous callback activity
273
* on a queue, such as calling the unplug function after a timeout.
274
* A block device may call blk_sync_queue to ensure that any
275
* such activity is cancelled, thus allowing it to release resources
276
* that the callbacks might use. The caller must already have made sure
277
* that its ->make_request_fn will not re-add plugging prior to calling
278
* this function.
279
*
280
* This function does not cancel any asynchronous activity arising
281
* out of elevator or throttling code. That would require elevaotor_exit()
282
* and blk_throtl_exit() to be called with queue lock initialized.
283
*
284
*/
285
void blk_sync_queue(struct request_queue *q)
286
{
287
del_timer_sync(&q->timeout);
288
cancel_delayed_work_sync(&q->delay_work);
289
}
290
EXPORT_SYMBOL(blk_sync_queue);
291
292
/**
293
* __blk_run_queue - run a single device queue
294
* @q: The queue to run
295
*
296
* Description:
297
* See @blk_run_queue. This variant must be called with the queue lock
298
* held and interrupts disabled.
299
*/
300
void __blk_run_queue(struct request_queue *q)
301
{
302
if (unlikely(blk_queue_stopped(q)))
303
return;
304
305
q->request_fn(q);
306
}
307
EXPORT_SYMBOL(__blk_run_queue);
308
309
/**
310
* blk_run_queue_async - run a single device queue in workqueue context
311
* @q: The queue to run
312
*
313
* Description:
314
* Tells kblockd to perform the equivalent of @blk_run_queue on behalf
315
* of us.
316
*/
317
void blk_run_queue_async(struct request_queue *q)
318
{
319
if (likely(!blk_queue_stopped(q))) {
320
__cancel_delayed_work(&q->delay_work);
321
queue_delayed_work(kblockd_workqueue, &q->delay_work, 0);
322
}
323
}
324
EXPORT_SYMBOL(blk_run_queue_async);
325
326
/**
327
* blk_run_queue - run a single device queue
328
* @q: The queue to run
329
*
330
* Description:
331
* Invoke request handling on this queue, if it has pending work to do.
332
* May be used to restart queueing when a request has completed.
333
*/
334
void blk_run_queue(struct request_queue *q)
335
{
336
unsigned long flags;
337
338
spin_lock_irqsave(q->queue_lock, flags);
339
__blk_run_queue(q);
340
spin_unlock_irqrestore(q->queue_lock, flags);
341
}
342
EXPORT_SYMBOL(blk_run_queue);
343
344
void blk_put_queue(struct request_queue *q)
345
{
346
kobject_put(&q->kobj);
347
}
348
EXPORT_SYMBOL(blk_put_queue);
349
350
/*
351
* Note: If a driver supplied the queue lock, it should not zap that lock
352
* unexpectedly as some queue cleanup components like elevator_exit() and
353
* blk_throtl_exit() need queue lock.
354
*/
355
void blk_cleanup_queue(struct request_queue *q)
356
{
357
/*
358
* We know we have process context here, so we can be a little
359
* cautious and ensure that pending block actions on this device
360
* are done before moving on. Going into this function, we should
361
* not have processes doing IO to this device.
362
*/
363
blk_sync_queue(q);
364
365
del_timer_sync(&q->backing_dev_info.laptop_mode_wb_timer);
366
mutex_lock(&q->sysfs_lock);
367
queue_flag_set_unlocked(QUEUE_FLAG_DEAD, q);
368
mutex_unlock(&q->sysfs_lock);
369
370
if (q->elevator)
371
elevator_exit(q->elevator);
372
373
blk_throtl_exit(q);
374
375
blk_put_queue(q);
376
}
377
EXPORT_SYMBOL(blk_cleanup_queue);
378
379
static int blk_init_free_list(struct request_queue *q)
380
{
381
struct request_list *rl = &q->rq;
382
383
if (unlikely(rl->rq_pool))
384
return 0;
385
386
rl->count[BLK_RW_SYNC] = rl->count[BLK_RW_ASYNC] = 0;
387
rl->starved[BLK_RW_SYNC] = rl->starved[BLK_RW_ASYNC] = 0;
388
rl->elvpriv = 0;
389
init_waitqueue_head(&rl->wait[BLK_RW_SYNC]);
390
init_waitqueue_head(&rl->wait[BLK_RW_ASYNC]);
391
392
rl->rq_pool = mempool_create_node(BLKDEV_MIN_RQ, mempool_alloc_slab,
393
mempool_free_slab, request_cachep, q->node);
394
395
if (!rl->rq_pool)
396
return -ENOMEM;
397
398
return 0;
399
}
400
401
struct request_queue *blk_alloc_queue(gfp_t gfp_mask)
402
{
403
return blk_alloc_queue_node(gfp_mask, -1);
404
}
405
EXPORT_SYMBOL(blk_alloc_queue);
406
407
struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
408
{
409
struct request_queue *q;
410
int err;
411
412
q = kmem_cache_alloc_node(blk_requestq_cachep,
413
gfp_mask | __GFP_ZERO, node_id);
414
if (!q)
415
return NULL;
416
417
q->backing_dev_info.ra_pages =
418
(VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
419
q->backing_dev_info.state = 0;
420
q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY;
421
q->backing_dev_info.name = "block";
422
423
err = bdi_init(&q->backing_dev_info);
424
if (err) {
425
kmem_cache_free(blk_requestq_cachep, q);
426
return NULL;
427
}
428
429
if (blk_throtl_init(q)) {
430
kmem_cache_free(blk_requestq_cachep, q);
431
return NULL;
432
}
433
434
setup_timer(&q->backing_dev_info.laptop_mode_wb_timer,
435
laptop_mode_timer_fn, (unsigned long) q);
436
setup_timer(&q->timeout, blk_rq_timed_out_timer, (unsigned long) q);
437
INIT_LIST_HEAD(&q->timeout_list);
438
INIT_LIST_HEAD(&q->flush_queue[0]);
439
INIT_LIST_HEAD(&q->flush_queue[1]);
440
INIT_LIST_HEAD(&q->flush_data_in_flight);
441
INIT_DELAYED_WORK(&q->delay_work, blk_delay_work);
442
443
kobject_init(&q->kobj, &blk_queue_ktype);
444
445
mutex_init(&q->sysfs_lock);
446
spin_lock_init(&q->__queue_lock);
447
448
/*
449
* By default initialize queue_lock to internal lock and driver can
450
* override it later if need be.
451
*/
452
q->queue_lock = &q->__queue_lock;
453
454
return q;
455
}
456
EXPORT_SYMBOL(blk_alloc_queue_node);
457
458
/**
459
* blk_init_queue - prepare a request queue for use with a block device
460
* @rfn: The function to be called to process requests that have been
461
* placed on the queue.
462
* @lock: Request queue spin lock
463
*
464
* Description:
465
* If a block device wishes to use the standard request handling procedures,
466
* which sorts requests and coalesces adjacent requests, then it must
467
* call blk_init_queue(). The function @rfn will be called when there
468
* are requests on the queue that need to be processed. If the device
469
* supports plugging, then @rfn may not be called immediately when requests
470
* are available on the queue, but may be called at some time later instead.
471
* Plugged queues are generally unplugged when a buffer belonging to one
472
* of the requests on the queue is needed, or due to memory pressure.
473
*
474
* @rfn is not required, or even expected, to remove all requests off the
475
* queue, but only as many as it can handle at a time. If it does leave
476
* requests on the queue, it is responsible for arranging that the requests
477
* get dealt with eventually.
478
*
479
* The queue spin lock must be held while manipulating the requests on the
480
* request queue; this lock will be taken also from interrupt context, so irq
481
* disabling is needed for it.
482
*
483
* Function returns a pointer to the initialized request queue, or %NULL if
484
* it didn't succeed.
485
*
486
* Note:
487
* blk_init_queue() must be paired with a blk_cleanup_queue() call
488
* when the block device is deactivated (such as at module unload).
489
**/
490
491
struct request_queue *blk_init_queue(request_fn_proc *rfn, spinlock_t *lock)
492
{
493
return blk_init_queue_node(rfn, lock, -1);
494
}
495
EXPORT_SYMBOL(blk_init_queue);
496
497
struct request_queue *
498
blk_init_queue_node(request_fn_proc *rfn, spinlock_t *lock, int node_id)
499
{
500
struct request_queue *uninit_q, *q;
501
502
uninit_q = blk_alloc_queue_node(GFP_KERNEL, node_id);
503
if (!uninit_q)
504
return NULL;
505
506
q = blk_init_allocated_queue_node(uninit_q, rfn, lock, node_id);
507
if (!q)
508
blk_cleanup_queue(uninit_q);
509
510
return q;
511
}
512
EXPORT_SYMBOL(blk_init_queue_node);
513
514
struct request_queue *
515
blk_init_allocated_queue(struct request_queue *q, request_fn_proc *rfn,
516
spinlock_t *lock)
517
{
518
return blk_init_allocated_queue_node(q, rfn, lock, -1);
519
}
520
EXPORT_SYMBOL(blk_init_allocated_queue);
521
522
struct request_queue *
523
blk_init_allocated_queue_node(struct request_queue *q, request_fn_proc *rfn,
524
spinlock_t *lock, int node_id)
525
{
526
if (!q)
527
return NULL;
528
529
q->node = node_id;
530
if (blk_init_free_list(q))
531
return NULL;
532
533
q->request_fn = rfn;
534
q->prep_rq_fn = NULL;
535
q->unprep_rq_fn = NULL;
536
q->queue_flags = QUEUE_FLAG_DEFAULT;
537
538
/* Override internal queue lock with supplied lock pointer */
539
if (lock)
540
q->queue_lock = lock;
541
542
/*
543
* This also sets hw/phys segments, boundary and size
544
*/
545
blk_queue_make_request(q, __make_request);
546
547
q->sg_reserved_size = INT_MAX;
548
549
/*
550
* all done
551
*/
552
if (!elevator_init(q, NULL)) {
553
blk_queue_congestion_threshold(q);
554
return q;
555
}
556
557
return NULL;
558
}
559
EXPORT_SYMBOL(blk_init_allocated_queue_node);
560
561
int blk_get_queue(struct request_queue *q)
562
{
563
if (likely(!test_bit(QUEUE_FLAG_DEAD, &q->queue_flags))) {
564
kobject_get(&q->kobj);
565
return 0;
566
}
567
568
return 1;
569
}
570
EXPORT_SYMBOL(blk_get_queue);
571
572
static inline void blk_free_request(struct request_queue *q, struct request *rq)
573
{
574
if (rq->cmd_flags & REQ_ELVPRIV)
575
elv_put_request(q, rq);
576
mempool_free(rq, q->rq.rq_pool);
577
}
578
579
static struct request *
580
blk_alloc_request(struct request_queue *q, int flags, int priv, gfp_t gfp_mask)
581
{
582
struct request *rq = mempool_alloc(q->rq.rq_pool, gfp_mask);
583
584
if (!rq)
585
return NULL;
586
587
blk_rq_init(q, rq);
588
589
rq->cmd_flags = flags | REQ_ALLOCED;
590
591
if (priv) {
592
if (unlikely(elv_set_request(q, rq, gfp_mask))) {
593
mempool_free(rq, q->rq.rq_pool);
594
return NULL;
595
}
596
rq->cmd_flags |= REQ_ELVPRIV;
597
}
598
599
return rq;
600
}
601
602
/*
603
* ioc_batching returns true if the ioc is a valid batching request and
604
* should be given priority access to a request.
605
*/
606
static inline int ioc_batching(struct request_queue *q, struct io_context *ioc)
607
{
608
if (!ioc)
609
return 0;
610
611
/*
612
* Make sure the process is able to allocate at least 1 request
613
* even if the batch times out, otherwise we could theoretically
614
* lose wakeups.
615
*/
616
return ioc->nr_batch_requests == q->nr_batching ||
617
(ioc->nr_batch_requests > 0
618
&& time_before(jiffies, ioc->last_waited + BLK_BATCH_TIME));
619
}
620
621
/*
622
* ioc_set_batching sets ioc to be a new "batcher" if it is not one. This
623
* will cause the process to be a "batcher" on all queues in the system. This
624
* is the behaviour we want though - once it gets a wakeup it should be given
625
* a nice run.
626
*/
627
static void ioc_set_batching(struct request_queue *q, struct io_context *ioc)
628
{
629
if (!ioc || ioc_batching(q, ioc))
630
return;
631
632
ioc->nr_batch_requests = q->nr_batching;
633
ioc->last_waited = jiffies;
634
}
635
636
static void __freed_request(struct request_queue *q, int sync)
637
{
638
struct request_list *rl = &q->rq;
639
640
if (rl->count[sync] < queue_congestion_off_threshold(q))
641
blk_clear_queue_congested(q, sync);
642
643
if (rl->count[sync] + 1 <= q->nr_requests) {
644
if (waitqueue_active(&rl->wait[sync]))
645
wake_up(&rl->wait[sync]);
646
647
blk_clear_queue_full(q, sync);
648
}
649
}
650
651
/*
652
* A request has just been released. Account for it, update the full and
653
* congestion status, wake up any waiters. Called under q->queue_lock.
654
*/
655
static void freed_request(struct request_queue *q, int sync, int priv)
656
{
657
struct request_list *rl = &q->rq;
658
659
rl->count[sync]--;
660
if (priv)
661
rl->elvpriv--;
662
663
__freed_request(q, sync);
664
665
if (unlikely(rl->starved[sync ^ 1]))
666
__freed_request(q, sync ^ 1);
667
}
668
669
/*
670
* Determine if elevator data should be initialized when allocating the
671
* request associated with @bio.
672
*/
673
static bool blk_rq_should_init_elevator(struct bio *bio)
674
{
675
if (!bio)
676
return true;
677
678
/*
679
* Flush requests do not use the elevator so skip initialization.
680
* This allows a request to share the flush and elevator data.
681
*/
682
if (bio->bi_rw & (REQ_FLUSH | REQ_FUA))
683
return false;
684
685
return true;
686
}
687
688
/*
689
* Get a free request, queue_lock must be held.
690
* Returns NULL on failure, with queue_lock held.
691
* Returns !NULL on success, with queue_lock *not held*.
692
*/
693
static struct request *get_request(struct request_queue *q, int rw_flags,
694
struct bio *bio, gfp_t gfp_mask)
695
{
696
struct request *rq = NULL;
697
struct request_list *rl = &q->rq;
698
struct io_context *ioc = NULL;
699
const bool is_sync = rw_is_sync(rw_flags) != 0;
700
int may_queue, priv = 0;
701
702
may_queue = elv_may_queue(q, rw_flags);
703
if (may_queue == ELV_MQUEUE_NO)
704
goto rq_starved;
705
706
if (rl->count[is_sync]+1 >= queue_congestion_on_threshold(q)) {
707
if (rl->count[is_sync]+1 >= q->nr_requests) {
708
ioc = current_io_context(GFP_ATOMIC, q->node);
709
/*
710
* The queue will fill after this allocation, so set
711
* it as full, and mark this process as "batching".
712
* This process will be allowed to complete a batch of
713
* requests, others will be blocked.
714
*/
715
if (!blk_queue_full(q, is_sync)) {
716
ioc_set_batching(q, ioc);
717
blk_set_queue_full(q, is_sync);
718
} else {
719
if (may_queue != ELV_MQUEUE_MUST
720
&& !ioc_batching(q, ioc)) {
721
/*
722
* The queue is full and the allocating
723
* process is not a "batcher", and not
724
* exempted by the IO scheduler
725
*/
726
goto out;
727
}
728
}
729
}
730
blk_set_queue_congested(q, is_sync);
731
}
732
733
/*
734
* Only allow batching queuers to allocate up to 50% over the defined
735
* limit of requests, otherwise we could have thousands of requests
736
* allocated with any setting of ->nr_requests
737
*/
738
if (rl->count[is_sync] >= (3 * q->nr_requests / 2))
739
goto out;
740
741
rl->count[is_sync]++;
742
rl->starved[is_sync] = 0;
743
744
if (blk_rq_should_init_elevator(bio)) {
745
priv = !test_bit(QUEUE_FLAG_ELVSWITCH, &q->queue_flags);
746
if (priv)
747
rl->elvpriv++;
748
}
749
750
if (blk_queue_io_stat(q))
751
rw_flags |= REQ_IO_STAT;
752
spin_unlock_irq(q->queue_lock);
753
754
rq = blk_alloc_request(q, rw_flags, priv, gfp_mask);
755
if (unlikely(!rq)) {
756
/*
757
* Allocation failed presumably due to memory. Undo anything
758
* we might have messed up.
759
*
760
* Allocating task should really be put onto the front of the
761
* wait queue, but this is pretty rare.
762
*/
763
spin_lock_irq(q->queue_lock);
764
freed_request(q, is_sync, priv);
765
766
/*
767
* in the very unlikely event that allocation failed and no
768
* requests for this direction was pending, mark us starved
769
* so that freeing of a request in the other direction will
770
* notice us. another possible fix would be to split the
771
* rq mempool into READ and WRITE
772
*/
773
rq_starved:
774
if (unlikely(rl->count[is_sync] == 0))
775
rl->starved[is_sync] = 1;
776
777
goto out;
778
}
779
780
/*
781
* ioc may be NULL here, and ioc_batching will be false. That's
782
* OK, if the queue is under the request limit then requests need
783
* not count toward the nr_batch_requests limit. There will always
784
* be some limit enforced by BLK_BATCH_TIME.
785
*/
786
if (ioc_batching(q, ioc))
787
ioc->nr_batch_requests--;
788
789
trace_block_getrq(q, bio, rw_flags & 1);
790
out:
791
return rq;
792
}
793
794
/*
795
* No available requests for this queue, wait for some requests to become
796
* available.
797
*
798
* Called with q->queue_lock held, and returns with it unlocked.
799
*/
800
static struct request *get_request_wait(struct request_queue *q, int rw_flags,
801
struct bio *bio)
802
{
803
const bool is_sync = rw_is_sync(rw_flags) != 0;
804
struct request *rq;
805
806
rq = get_request(q, rw_flags, bio, GFP_NOIO);
807
while (!rq) {
808
DEFINE_WAIT(wait);
809
struct io_context *ioc;
810
struct request_list *rl = &q->rq;
811
812
prepare_to_wait_exclusive(&rl->wait[is_sync], &wait,
813
TASK_UNINTERRUPTIBLE);
814
815
trace_block_sleeprq(q, bio, rw_flags & 1);
816
817
spin_unlock_irq(q->queue_lock);
818
io_schedule();
819
820
/*
821
* After sleeping, we become a "batching" process and
822
* will be able to allocate at least one request, and
823
* up to a big batch of them for a small period time.
824
* See ioc_batching, ioc_set_batching
825
*/
826
ioc = current_io_context(GFP_NOIO, q->node);
827
ioc_set_batching(q, ioc);
828
829
spin_lock_irq(q->queue_lock);
830
finish_wait(&rl->wait[is_sync], &wait);
831
832
rq = get_request(q, rw_flags, bio, GFP_NOIO);
833
};
834
835
return rq;
836
}
837
838
struct request *blk_get_request(struct request_queue *q, int rw, gfp_t gfp_mask)
839
{
840
struct request *rq;
841
842
BUG_ON(rw != READ && rw != WRITE);
843
844
spin_lock_irq(q->queue_lock);
845
if (gfp_mask & __GFP_WAIT) {
846
rq = get_request_wait(q, rw, NULL);
847
} else {
848
rq = get_request(q, rw, NULL, gfp_mask);
849
if (!rq)
850
spin_unlock_irq(q->queue_lock);
851
}
852
/* q->queue_lock is unlocked at this point */
853
854
return rq;
855
}
856
EXPORT_SYMBOL(blk_get_request);
857
858
/**
859
* blk_make_request - given a bio, allocate a corresponding struct request.
860
* @q: target request queue
861
* @bio: The bio describing the memory mappings that will be submitted for IO.
862
* It may be a chained-bio properly constructed by block/bio layer.
863
* @gfp_mask: gfp flags to be used for memory allocation
864
*
865
* blk_make_request is the parallel of generic_make_request for BLOCK_PC
866
* type commands. Where the struct request needs to be farther initialized by
867
* the caller. It is passed a &struct bio, which describes the memory info of
868
* the I/O transfer.
869
*
870
* The caller of blk_make_request must make sure that bi_io_vec
871
* are set to describe the memory buffers. That bio_data_dir() will return
872
* the needed direction of the request. (And all bio's in the passed bio-chain
873
* are properly set accordingly)
874
*
875
* If called under none-sleepable conditions, mapped bio buffers must not
876
* need bouncing, by calling the appropriate masked or flagged allocator,
877
* suitable for the target device. Otherwise the call to blk_queue_bounce will
878
* BUG.
879
*
880
* WARNING: When allocating/cloning a bio-chain, careful consideration should be
881
* given to how you allocate bios. In particular, you cannot use __GFP_WAIT for
882
* anything but the first bio in the chain. Otherwise you risk waiting for IO
883
* completion of a bio that hasn't been submitted yet, thus resulting in a
884
* deadlock. Alternatively bios should be allocated using bio_kmalloc() instead
885
* of bio_alloc(), as that avoids the mempool deadlock.
886
* If possible a big IO should be split into smaller parts when allocation
887
* fails. Partial allocation should not be an error, or you risk a live-lock.
888
*/
889
struct request *blk_make_request(struct request_queue *q, struct bio *bio,
890
gfp_t gfp_mask)
891
{
892
struct request *rq = blk_get_request(q, bio_data_dir(bio), gfp_mask);
893
894
if (unlikely(!rq))
895
return ERR_PTR(-ENOMEM);
896
897
for_each_bio(bio) {
898
struct bio *bounce_bio = bio;
899
int ret;
900
901
blk_queue_bounce(q, &bounce_bio);
902
ret = blk_rq_append_bio(q, rq, bounce_bio);
903
if (unlikely(ret)) {
904
blk_put_request(rq);
905
return ERR_PTR(ret);
906
}
907
}
908
909
return rq;
910
}
911
EXPORT_SYMBOL(blk_make_request);
912
913
/**
914
* blk_requeue_request - put a request back on queue
915
* @q: request queue where request should be inserted
916
* @rq: request to be inserted
917
*
918
* Description:
919
* Drivers often keep queueing requests until the hardware cannot accept
920
* more, when that condition happens we need to put the request back
921
* on the queue. Must be called with queue lock held.
922
*/
923
void blk_requeue_request(struct request_queue *q, struct request *rq)
924
{
925
blk_delete_timer(rq);
926
blk_clear_rq_complete(rq);
927
trace_block_rq_requeue(q, rq);
928
929
if (blk_rq_tagged(rq))
930
blk_queue_end_tag(q, rq);
931
932
BUG_ON(blk_queued_rq(rq));
933
934
elv_requeue_request(q, rq);
935
}
936
EXPORT_SYMBOL(blk_requeue_request);
937
938
static void add_acct_request(struct request_queue *q, struct request *rq,
939
int where)
940
{
941
drive_stat_acct(rq, 1);
942
__elv_add_request(q, rq, where);
943
}
944
945
/**
946
* blk_insert_request - insert a special request into a request queue
947
* @q: request queue where request should be inserted
948
* @rq: request to be inserted
949
* @at_head: insert request at head or tail of queue
950
* @data: private data
951
*
952
* Description:
953
* Many block devices need to execute commands asynchronously, so they don't
954
* block the whole kernel from preemption during request execution. This is
955
* accomplished normally by inserting aritficial requests tagged as
956
* REQ_TYPE_SPECIAL in to the corresponding request queue, and letting them
957
* be scheduled for actual execution by the request queue.
958
*
959
* We have the option of inserting the head or the tail of the queue.
960
* Typically we use the tail for new ioctls and so forth. We use the head
961
* of the queue for things like a QUEUE_FULL message from a device, or a
962
* host that is unable to accept a particular command.
963
*/
964
void blk_insert_request(struct request_queue *q, struct request *rq,
965
int at_head, void *data)
966
{
967
int where = at_head ? ELEVATOR_INSERT_FRONT : ELEVATOR_INSERT_BACK;
968
unsigned long flags;
969
970
/*
971
* tell I/O scheduler that this isn't a regular read/write (ie it
972
* must not attempt merges on this) and that it acts as a soft
973
* barrier
974
*/
975
rq->cmd_type = REQ_TYPE_SPECIAL;
976
977
rq->special = data;
978
979
spin_lock_irqsave(q->queue_lock, flags);
980
981
/*
982
* If command is tagged, release the tag
983
*/
984
if (blk_rq_tagged(rq))
985
blk_queue_end_tag(q, rq);
986
987
add_acct_request(q, rq, where);
988
__blk_run_queue(q);
989
spin_unlock_irqrestore(q->queue_lock, flags);
990
}
991
EXPORT_SYMBOL(blk_insert_request);
992
993
static void part_round_stats_single(int cpu, struct hd_struct *part,
994
unsigned long now)
995
{
996
if (now == part->stamp)
997
return;
998
999
if (part_in_flight(part)) {
1000
__part_stat_add(cpu, part, time_in_queue,
1001
part_in_flight(part) * (now - part->stamp));
1002
__part_stat_add(cpu, part, io_ticks, (now - part->stamp));
1003
}
1004
part->stamp = now;
1005
}
1006
1007
/**
1008
* part_round_stats() - Round off the performance stats on a struct disk_stats.
1009
* @cpu: cpu number for stats access
1010
* @part: target partition
1011
*
1012
* The average IO queue length and utilisation statistics are maintained
1013
* by observing the current state of the queue length and the amount of
1014
* time it has been in this state for.
1015
*
1016
* Normally, that accounting is done on IO completion, but that can result
1017
* in more than a second's worth of IO being accounted for within any one
1018
* second, leading to >100% utilisation. To deal with that, we call this
1019
* function to do a round-off before returning the results when reading
1020
* /proc/diskstats. This accounts immediately for all queue usage up to
1021
* the current jiffies and restarts the counters again.
1022
*/
1023
void part_round_stats(int cpu, struct hd_struct *part)
1024
{
1025
unsigned long now = jiffies;
1026
1027
if (part->partno)
1028
part_round_stats_single(cpu, &part_to_disk(part)->part0, now);
1029
part_round_stats_single(cpu, part, now);
1030
}
1031
EXPORT_SYMBOL_GPL(part_round_stats);
1032
1033
/*
1034
* queue lock must be held
1035
*/
1036
void __blk_put_request(struct request_queue *q, struct request *req)
1037
{
1038
if (unlikely(!q))
1039
return;
1040
if (unlikely(--req->ref_count))
1041
return;
1042
1043
elv_completed_request(q, req);
1044
1045
/* this is a bio leak */
1046
WARN_ON(req->bio != NULL);
1047
1048
/*
1049
* Request may not have originated from ll_rw_blk. if not,
1050
* it didn't come out of our reserved rq pools
1051
*/
1052
if (req->cmd_flags & REQ_ALLOCED) {
1053
int is_sync = rq_is_sync(req) != 0;
1054
int priv = req->cmd_flags & REQ_ELVPRIV;
1055
1056
BUG_ON(!list_empty(&req->queuelist));
1057
BUG_ON(!hlist_unhashed(&req->hash));
1058
1059
blk_free_request(q, req);
1060
freed_request(q, is_sync, priv);
1061
}
1062
}
1063
EXPORT_SYMBOL_GPL(__blk_put_request);
1064
1065
void blk_put_request(struct request *req)
1066
{
1067
unsigned long flags;
1068
struct request_queue *q = req->q;
1069
1070
spin_lock_irqsave(q->queue_lock, flags);
1071
__blk_put_request(q, req);
1072
spin_unlock_irqrestore(q->queue_lock, flags);
1073
}
1074
EXPORT_SYMBOL(blk_put_request);
1075
1076
/**
1077
* blk_add_request_payload - add a payload to a request
1078
* @rq: request to update
1079
* @page: page backing the payload
1080
* @len: length of the payload.
1081
*
1082
* This allows to later add a payload to an already submitted request by
1083
* a block driver. The driver needs to take care of freeing the payload
1084
* itself.
1085
*
1086
* Note that this is a quite horrible hack and nothing but handling of
1087
* discard requests should ever use it.
1088
*/
1089
void blk_add_request_payload(struct request *rq, struct page *page,
1090
unsigned int len)
1091
{
1092
struct bio *bio = rq->bio;
1093
1094
bio->bi_io_vec->bv_page = page;
1095
bio->bi_io_vec->bv_offset = 0;
1096
bio->bi_io_vec->bv_len = len;
1097
1098
bio->bi_size = len;
1099
bio->bi_vcnt = 1;
1100
bio->bi_phys_segments = 1;
1101
1102
rq->__data_len = rq->resid_len = len;
1103
rq->nr_phys_segments = 1;
1104
rq->buffer = bio_data(bio);
1105
}
1106
EXPORT_SYMBOL_GPL(blk_add_request_payload);
1107
1108
static bool bio_attempt_back_merge(struct request_queue *q, struct request *req,
1109
struct bio *bio)
1110
{
1111
const int ff = bio->bi_rw & REQ_FAILFAST_MASK;
1112
1113
if (!ll_back_merge_fn(q, req, bio))
1114
return false;
1115
1116
trace_block_bio_backmerge(q, bio);
1117
1118
if ((req->cmd_flags & REQ_FAILFAST_MASK) != ff)
1119
blk_rq_set_mixed_merge(req);
1120
1121
req->biotail->bi_next = bio;
1122
req->biotail = bio;
1123
req->__data_len += bio->bi_size;
1124
req->ioprio = ioprio_best(req->ioprio, bio_prio(bio));
1125
1126
drive_stat_acct(req, 0);
1127
elv_bio_merged(q, req, bio);
1128
return true;
1129
}
1130
1131
static bool bio_attempt_front_merge(struct request_queue *q,
1132
struct request *req, struct bio *bio)
1133
{
1134
const int ff = bio->bi_rw & REQ_FAILFAST_MASK;
1135
1136
if (!ll_front_merge_fn(q, req, bio))
1137
return false;
1138
1139
trace_block_bio_frontmerge(q, bio);
1140
1141
if ((req->cmd_flags & REQ_FAILFAST_MASK) != ff)
1142
blk_rq_set_mixed_merge(req);
1143
1144
bio->bi_next = req->bio;
1145
req->bio = bio;
1146
1147
/*
1148
* may not be valid. if the low level driver said
1149
* it didn't need a bounce buffer then it better
1150
* not touch req->buffer either...
1151
*/
1152
req->buffer = bio_data(bio);
1153
req->__sector = bio->bi_sector;
1154
req->__data_len += bio->bi_size;
1155
req->ioprio = ioprio_best(req->ioprio, bio_prio(bio));
1156
1157
drive_stat_acct(req, 0);
1158
elv_bio_merged(q, req, bio);
1159
return true;
1160
}
1161
1162
/*
1163
* Attempts to merge with the plugged list in the current process. Returns
1164
* true if merge was successful, otherwise false.
1165
*/
1166
static bool attempt_plug_merge(struct task_struct *tsk, struct request_queue *q,
1167
struct bio *bio)
1168
{
1169
struct blk_plug *plug;
1170
struct request *rq;
1171
bool ret = false;
1172
1173
plug = tsk->plug;
1174
if (!plug)
1175
goto out;
1176
1177
list_for_each_entry_reverse(rq, &plug->list, queuelist) {
1178
int el_ret;
1179
1180
if (rq->q != q)
1181
continue;
1182
1183
el_ret = elv_try_merge(rq, bio);
1184
if (el_ret == ELEVATOR_BACK_MERGE) {
1185
ret = bio_attempt_back_merge(q, rq, bio);
1186
if (ret)
1187
break;
1188
} else if (el_ret == ELEVATOR_FRONT_MERGE) {
1189
ret = bio_attempt_front_merge(q, rq, bio);
1190
if (ret)
1191
break;
1192
}
1193
}
1194
out:
1195
return ret;
1196
}
1197
1198
void init_request_from_bio(struct request *req, struct bio *bio)
1199
{
1200
req->cpu = bio->bi_comp_cpu;
1201
req->cmd_type = REQ_TYPE_FS;
1202
1203
req->cmd_flags |= bio->bi_rw & REQ_COMMON_MASK;
1204
if (bio->bi_rw & REQ_RAHEAD)
1205
req->cmd_flags |= REQ_FAILFAST_MASK;
1206
1207
req->errors = 0;
1208
req->__sector = bio->bi_sector;
1209
req->ioprio = bio_prio(bio);
1210
blk_rq_bio_prep(req->q, req, bio);
1211
}
1212
1213
static int __make_request(struct request_queue *q, struct bio *bio)
1214
{
1215
const bool sync = !!(bio->bi_rw & REQ_SYNC);
1216
struct blk_plug *plug;
1217
int el_ret, rw_flags, where = ELEVATOR_INSERT_SORT;
1218
struct request *req;
1219
1220
/*
1221
* low level driver can indicate that it wants pages above a
1222
* certain limit bounced to low memory (ie for highmem, or even
1223
* ISA dma in theory)
1224
*/
1225
blk_queue_bounce(q, &bio);
1226
1227
if (bio->bi_rw & (REQ_FLUSH | REQ_FUA)) {
1228
spin_lock_irq(q->queue_lock);
1229
where = ELEVATOR_INSERT_FLUSH;
1230
goto get_rq;
1231
}
1232
1233
/*
1234
* Check if we can merge with the plugged list before grabbing
1235
* any locks.
1236
*/
1237
if (attempt_plug_merge(current, q, bio))
1238
goto out;
1239
1240
spin_lock_irq(q->queue_lock);
1241
1242
el_ret = elv_merge(q, &req, bio);
1243
if (el_ret == ELEVATOR_BACK_MERGE) {
1244
if (bio_attempt_back_merge(q, req, bio)) {
1245
if (!attempt_back_merge(q, req))
1246
elv_merged_request(q, req, el_ret);
1247
goto out_unlock;
1248
}
1249
} else if (el_ret == ELEVATOR_FRONT_MERGE) {
1250
if (bio_attempt_front_merge(q, req, bio)) {
1251
if (!attempt_front_merge(q, req))
1252
elv_merged_request(q, req, el_ret);
1253
goto out_unlock;
1254
}
1255
}
1256
1257
get_rq:
1258
/*
1259
* This sync check and mask will be re-done in init_request_from_bio(),
1260
* but we need to set it earlier to expose the sync flag to the
1261
* rq allocator and io schedulers.
1262
*/
1263
rw_flags = bio_data_dir(bio);
1264
if (sync)
1265
rw_flags |= REQ_SYNC;
1266
1267
/*
1268
* Grab a free request. This is might sleep but can not fail.
1269
* Returns with the queue unlocked.
1270
*/
1271
req = get_request_wait(q, rw_flags, bio);
1272
1273
/*
1274
* After dropping the lock and possibly sleeping here, our request
1275
* may now be mergeable after it had proven unmergeable (above).
1276
* We don't worry about that case for efficiency. It won't happen
1277
* often, and the elevators are able to handle it.
1278
*/
1279
init_request_from_bio(req, bio);
1280
1281
if (test_bit(QUEUE_FLAG_SAME_COMP, &q->queue_flags) ||
1282
bio_flagged(bio, BIO_CPU_AFFINE)) {
1283
req->cpu = blk_cpu_to_group(get_cpu());
1284
put_cpu();
1285
}
1286
1287
plug = current->plug;
1288
if (plug) {
1289
/*
1290
* If this is the first request added after a plug, fire
1291
* of a plug trace. If others have been added before, check
1292
* if we have multiple devices in this plug. If so, make a
1293
* note to sort the list before dispatch.
1294
*/
1295
if (list_empty(&plug->list))
1296
trace_block_plug(q);
1297
else if (!plug->should_sort) {
1298
struct request *__rq;
1299
1300
__rq = list_entry_rq(plug->list.prev);
1301
if (__rq->q != q)
1302
plug->should_sort = 1;
1303
}
1304
list_add_tail(&req->queuelist, &plug->list);
1305
drive_stat_acct(req, 1);
1306
} else {
1307
spin_lock_irq(q->queue_lock);
1308
add_acct_request(q, req, where);
1309
__blk_run_queue(q);
1310
out_unlock:
1311
spin_unlock_irq(q->queue_lock);
1312
}
1313
out:
1314
return 0;
1315
}
1316
1317
/*
1318
* If bio->bi_dev is a partition, remap the location
1319
*/
1320
static inline void blk_partition_remap(struct bio *bio)
1321
{
1322
struct block_device *bdev = bio->bi_bdev;
1323
1324
if (bio_sectors(bio) && bdev != bdev->bd_contains) {
1325
struct hd_struct *p = bdev->bd_part;
1326
1327
bio->bi_sector += p->start_sect;
1328
bio->bi_bdev = bdev->bd_contains;
1329
1330
trace_block_bio_remap(bdev_get_queue(bio->bi_bdev), bio,
1331
bdev->bd_dev,
1332
bio->bi_sector - p->start_sect);
1333
}
1334
}
1335
1336
static void handle_bad_sector(struct bio *bio)
1337
{
1338
char b[BDEVNAME_SIZE];
1339
1340
printk(KERN_INFO "attempt to access beyond end of device\n");
1341
printk(KERN_INFO "%s: rw=%ld, want=%Lu, limit=%Lu\n",
1342
bdevname(bio->bi_bdev, b),
1343
bio->bi_rw,
1344
(unsigned long long)bio->bi_sector + bio_sectors(bio),
1345
(long long)(i_size_read(bio->bi_bdev->bd_inode) >> 9));
1346
1347
set_bit(BIO_EOF, &bio->bi_flags);
1348
}
1349
1350
#ifdef CONFIG_FAIL_MAKE_REQUEST
1351
1352
static DECLARE_FAULT_ATTR(fail_make_request);
1353
1354
static int __init setup_fail_make_request(char *str)
1355
{
1356
return setup_fault_attr(&fail_make_request, str);
1357
}
1358
__setup("fail_make_request=", setup_fail_make_request);
1359
1360
static int should_fail_request(struct bio *bio)
1361
{
1362
struct hd_struct *part = bio->bi_bdev->bd_part;
1363
1364
if (part_to_disk(part)->part0.make_it_fail || part->make_it_fail)
1365
return should_fail(&fail_make_request, bio->bi_size);
1366
1367
return 0;
1368
}
1369
1370
static int __init fail_make_request_debugfs(void)
1371
{
1372
return init_fault_attr_dentries(&fail_make_request,
1373
"fail_make_request");
1374
}
1375
1376
late_initcall(fail_make_request_debugfs);
1377
1378
#else /* CONFIG_FAIL_MAKE_REQUEST */
1379
1380
static inline int should_fail_request(struct bio *bio)
1381
{
1382
return 0;
1383
}
1384
1385
#endif /* CONFIG_FAIL_MAKE_REQUEST */
1386
1387
/*
1388
* Check whether this bio extends beyond the end of the device.
1389
*/
1390
static inline int bio_check_eod(struct bio *bio, unsigned int nr_sectors)
1391
{
1392
sector_t maxsector;
1393
1394
if (!nr_sectors)
1395
return 0;
1396
1397
/* Test device or partition size, when known. */
1398
maxsector = i_size_read(bio->bi_bdev->bd_inode) >> 9;
1399
if (maxsector) {
1400
sector_t sector = bio->bi_sector;
1401
1402
if (maxsector < nr_sectors || maxsector - nr_sectors < sector) {
1403
/*
1404
* This may well happen - the kernel calls bread()
1405
* without checking the size of the device, e.g., when
1406
* mounting a device.
1407
*/
1408
handle_bad_sector(bio);
1409
return 1;
1410
}
1411
}
1412
1413
return 0;
1414
}
1415
1416
/**
1417
* generic_make_request - hand a buffer to its device driver for I/O
1418
* @bio: The bio describing the location in memory and on the device.
1419
*
1420
* generic_make_request() is used to make I/O requests of block
1421
* devices. It is passed a &struct bio, which describes the I/O that needs
1422
* to be done.
1423
*
1424
* generic_make_request() does not return any status. The
1425
* success/failure status of the request, along with notification of
1426
* completion, is delivered asynchronously through the bio->bi_end_io
1427
* function described (one day) else where.
1428
*
1429
* The caller of generic_make_request must make sure that bi_io_vec
1430
* are set to describe the memory buffer, and that bi_dev and bi_sector are
1431
* set to describe the device address, and the
1432
* bi_end_io and optionally bi_private are set to describe how
1433
* completion notification should be signaled.
1434
*
1435
* generic_make_request and the drivers it calls may use bi_next if this
1436
* bio happens to be merged with someone else, and may change bi_dev and
1437
* bi_sector for remaps as it sees fit. So the values of these fields
1438
* should NOT be depended on after the call to generic_make_request.
1439
*/
1440
static inline void __generic_make_request(struct bio *bio)
1441
{
1442
struct request_queue *q;
1443
sector_t old_sector;
1444
int ret, nr_sectors = bio_sectors(bio);
1445
dev_t old_dev;
1446
int err = -EIO;
1447
1448
might_sleep();
1449
1450
if (bio_check_eod(bio, nr_sectors))
1451
goto end_io;
1452
1453
/*
1454
* Resolve the mapping until finished. (drivers are
1455
* still free to implement/resolve their own stacking
1456
* by explicitly returning 0)
1457
*
1458
* NOTE: we don't repeat the blk_size check for each new device.
1459
* Stacking drivers are expected to know what they are doing.
1460
*/
1461
old_sector = -1;
1462
old_dev = 0;
1463
do {
1464
char b[BDEVNAME_SIZE];
1465
1466
q = bdev_get_queue(bio->bi_bdev);
1467
if (unlikely(!q)) {
1468
printk(KERN_ERR
1469
"generic_make_request: Trying to access "
1470
"nonexistent block-device %s (%Lu)\n",
1471
bdevname(bio->bi_bdev, b),
1472
(long long) bio->bi_sector);
1473
goto end_io;
1474
}
1475
1476
if (unlikely(!(bio->bi_rw & REQ_DISCARD) &&
1477
nr_sectors > queue_max_hw_sectors(q))) {
1478
printk(KERN_ERR "bio too big device %s (%u > %u)\n",
1479
bdevname(bio->bi_bdev, b),
1480
bio_sectors(bio),
1481
queue_max_hw_sectors(q));
1482
goto end_io;
1483
}
1484
1485
if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags)))
1486
goto end_io;
1487
1488
if (should_fail_request(bio))
1489
goto end_io;
1490
1491
/*
1492
* If this device has partitions, remap block n
1493
* of partition p to block n+start(p) of the disk.
1494
*/
1495
blk_partition_remap(bio);
1496
1497
if (bio_integrity_enabled(bio) && bio_integrity_prep(bio))
1498
goto end_io;
1499
1500
if (old_sector != -1)
1501
trace_block_bio_remap(q, bio, old_dev, old_sector);
1502
1503
old_sector = bio->bi_sector;
1504
old_dev = bio->bi_bdev->bd_dev;
1505
1506
if (bio_check_eod(bio, nr_sectors))
1507
goto end_io;
1508
1509
/*
1510
* Filter flush bio's early so that make_request based
1511
* drivers without flush support don't have to worry
1512
* about them.
1513
*/
1514
if ((bio->bi_rw & (REQ_FLUSH | REQ_FUA)) && !q->flush_flags) {
1515
bio->bi_rw &= ~(REQ_FLUSH | REQ_FUA);
1516
if (!nr_sectors) {
1517
err = 0;
1518
goto end_io;
1519
}
1520
}
1521
1522
if ((bio->bi_rw & REQ_DISCARD) &&
1523
(!blk_queue_discard(q) ||
1524
((bio->bi_rw & REQ_SECURE) &&
1525
!blk_queue_secdiscard(q)))) {
1526
err = -EOPNOTSUPP;
1527
goto end_io;
1528
}
1529
1530
if (blk_throtl_bio(q, &bio))
1531
goto end_io;
1532
1533
/*
1534
* If bio = NULL, bio has been throttled and will be submitted
1535
* later.
1536
*/
1537
if (!bio)
1538
break;
1539
1540
trace_block_bio_queue(q, bio);
1541
1542
ret = q->make_request_fn(q, bio);
1543
} while (ret);
1544
1545
return;
1546
1547
end_io:
1548
bio_endio(bio, err);
1549
}
1550
1551
/*
1552
* We only want one ->make_request_fn to be active at a time,
1553
* else stack usage with stacked devices could be a problem.
1554
* So use current->bio_list to keep a list of requests
1555
* submited by a make_request_fn function.
1556
* current->bio_list is also used as a flag to say if
1557
* generic_make_request is currently active in this task or not.
1558
* If it is NULL, then no make_request is active. If it is non-NULL,
1559
* then a make_request is active, and new requests should be added
1560
* at the tail
1561
*/
1562
void generic_make_request(struct bio *bio)
1563
{
1564
struct bio_list bio_list_on_stack;
1565
1566
if (current->bio_list) {
1567
/* make_request is active */
1568
bio_list_add(current->bio_list, bio);
1569
return;
1570
}
1571
/* following loop may be a bit non-obvious, and so deserves some
1572
* explanation.
1573
* Before entering the loop, bio->bi_next is NULL (as all callers
1574
* ensure that) so we have a list with a single bio.
1575
* We pretend that we have just taken it off a longer list, so
1576
* we assign bio_list to a pointer to the bio_list_on_stack,
1577
* thus initialising the bio_list of new bios to be
1578
* added. __generic_make_request may indeed add some more bios
1579
* through a recursive call to generic_make_request. If it
1580
* did, we find a non-NULL value in bio_list and re-enter the loop
1581
* from the top. In this case we really did just take the bio
1582
* of the top of the list (no pretending) and so remove it from
1583
* bio_list, and call into __generic_make_request again.
1584
*
1585
* The loop was structured like this to make only one call to
1586
* __generic_make_request (which is important as it is large and
1587
* inlined) and to keep the structure simple.
1588
*/
1589
BUG_ON(bio->bi_next);
1590
bio_list_init(&bio_list_on_stack);
1591
current->bio_list = &bio_list_on_stack;
1592
do {
1593
__generic_make_request(bio);
1594
bio = bio_list_pop(current->bio_list);
1595
} while (bio);
1596
current->bio_list = NULL; /* deactivate */
1597
}
1598
EXPORT_SYMBOL(generic_make_request);
1599
1600
/**
1601
* submit_bio - submit a bio to the block device layer for I/O
1602
* @rw: whether to %READ or %WRITE, or maybe to %READA (read ahead)
1603
* @bio: The &struct bio which describes the I/O
1604
*
1605
* submit_bio() is very similar in purpose to generic_make_request(), and
1606
* uses that function to do most of the work. Both are fairly rough
1607
* interfaces; @bio must be presetup and ready for I/O.
1608
*
1609
*/
1610
void submit_bio(int rw, struct bio *bio)
1611
{
1612
int count = bio_sectors(bio);
1613
1614
bio->bi_rw |= rw;
1615
1616
/*
1617
* If it's a regular read/write or a barrier with data attached,
1618
* go through the normal accounting stuff before submission.
1619
*/
1620
if (bio_has_data(bio) && !(rw & REQ_DISCARD)) {
1621
if (rw & WRITE) {
1622
count_vm_events(PGPGOUT, count);
1623
} else {
1624
task_io_account_read(bio->bi_size);
1625
count_vm_events(PGPGIN, count);
1626
}
1627
1628
if (unlikely(block_dump)) {
1629
char b[BDEVNAME_SIZE];
1630
printk(KERN_DEBUG "%s(%d): %s block %Lu on %s (%u sectors)\n",
1631
current->comm, task_pid_nr(current),
1632
(rw & WRITE) ? "WRITE" : "READ",
1633
(unsigned long long)bio->bi_sector,
1634
bdevname(bio->bi_bdev, b),
1635
count);
1636
}
1637
}
1638
1639
generic_make_request(bio);
1640
}
1641
EXPORT_SYMBOL(submit_bio);
1642
1643
/**
1644
* blk_rq_check_limits - Helper function to check a request for the queue limit
1645
* @q: the queue
1646
* @rq: the request being checked
1647
*
1648
* Description:
1649
* @rq may have been made based on weaker limitations of upper-level queues
1650
* in request stacking drivers, and it may violate the limitation of @q.
1651
* Since the block layer and the underlying device driver trust @rq
1652
* after it is inserted to @q, it should be checked against @q before
1653
* the insertion using this generic function.
1654
*
1655
* This function should also be useful for request stacking drivers
1656
* in some cases below, so export this function.
1657
* Request stacking drivers like request-based dm may change the queue
1658
* limits while requests are in the queue (e.g. dm's table swapping).
1659
* Such request stacking drivers should check those requests agaist
1660
* the new queue limits again when they dispatch those requests,
1661
* although such checkings are also done against the old queue limits
1662
* when submitting requests.
1663
*/
1664
int blk_rq_check_limits(struct request_queue *q, struct request *rq)
1665
{
1666
if (rq->cmd_flags & REQ_DISCARD)
1667
return 0;
1668
1669
if (blk_rq_sectors(rq) > queue_max_sectors(q) ||
1670
blk_rq_bytes(rq) > queue_max_hw_sectors(q) << 9) {
1671
printk(KERN_ERR "%s: over max size limit.\n", __func__);
1672
return -EIO;
1673
}
1674
1675
/*
1676
* queue's settings related to segment counting like q->bounce_pfn
1677
* may differ from that of other stacking queues.
1678
* Recalculate it to check the request correctly on this queue's
1679
* limitation.
1680
*/
1681
blk_recalc_rq_segments(rq);
1682
if (rq->nr_phys_segments > queue_max_segments(q)) {
1683
printk(KERN_ERR "%s: over max segments limit.\n", __func__);
1684
return -EIO;
1685
}
1686
1687
return 0;
1688
}
1689
EXPORT_SYMBOL_GPL(blk_rq_check_limits);
1690
1691
/**
1692
* blk_insert_cloned_request - Helper for stacking drivers to submit a request
1693
* @q: the queue to submit the request
1694
* @rq: the request being queued
1695
*/
1696
int blk_insert_cloned_request(struct request_queue *q, struct request *rq)
1697
{
1698
unsigned long flags;
1699
1700
if (blk_rq_check_limits(q, rq))
1701
return -EIO;
1702
1703
#ifdef CONFIG_FAIL_MAKE_REQUEST
1704
if (rq->rq_disk && rq->rq_disk->part0.make_it_fail &&
1705
should_fail(&fail_make_request, blk_rq_bytes(rq)))
1706
return -EIO;
1707
#endif
1708
1709
spin_lock_irqsave(q->queue_lock, flags);
1710
1711
/*
1712
* Submitting request must be dequeued before calling this function
1713
* because it will be linked to another request_queue
1714
*/
1715
BUG_ON(blk_queued_rq(rq));
1716
1717
add_acct_request(q, rq, ELEVATOR_INSERT_BACK);
1718
spin_unlock_irqrestore(q->queue_lock, flags);
1719
1720
return 0;
1721
}
1722
EXPORT_SYMBOL_GPL(blk_insert_cloned_request);
1723
1724
/**
1725
* blk_rq_err_bytes - determine number of bytes till the next failure boundary
1726
* @rq: request to examine
1727
*
1728
* Description:
1729
* A request could be merge of IOs which require different failure
1730
* handling. This function determines the number of bytes which
1731
* can be failed from the beginning of the request without
1732
* crossing into area which need to be retried further.
1733
*
1734
* Return:
1735
* The number of bytes to fail.
1736
*
1737
* Context:
1738
* queue_lock must be held.
1739
*/
1740
unsigned int blk_rq_err_bytes(const struct request *rq)
1741
{
1742
unsigned int ff = rq->cmd_flags & REQ_FAILFAST_MASK;
1743
unsigned int bytes = 0;
1744
struct bio *bio;
1745
1746
if (!(rq->cmd_flags & REQ_MIXED_MERGE))
1747
return blk_rq_bytes(rq);
1748
1749
/*
1750
* Currently the only 'mixing' which can happen is between
1751
* different fastfail types. We can safely fail portions
1752
* which have all the failfast bits that the first one has -
1753
* the ones which are at least as eager to fail as the first
1754
* one.
1755
*/
1756
for (bio = rq->bio; bio; bio = bio->bi_next) {
1757
if ((bio->bi_rw & ff) != ff)
1758
break;
1759
bytes += bio->bi_size;
1760
}
1761
1762
/* this could lead to infinite loop */
1763
BUG_ON(blk_rq_bytes(rq) && !bytes);
1764
return bytes;
1765
}
1766
EXPORT_SYMBOL_GPL(blk_rq_err_bytes);
1767
1768
static void blk_account_io_completion(struct request *req, unsigned int bytes)
1769
{
1770
if (blk_do_io_stat(req)) {
1771
const int rw = rq_data_dir(req);
1772
struct hd_struct *part;
1773
int cpu;
1774
1775
cpu = part_stat_lock();
1776
part = req->part;
1777
part_stat_add(cpu, part, sectors[rw], bytes >> 9);
1778
part_stat_unlock();
1779
}
1780
}
1781
1782
static void blk_account_io_done(struct request *req)
1783
{
1784
/*
1785
* Account IO completion. flush_rq isn't accounted as a
1786
* normal IO on queueing nor completion. Accounting the
1787
* containing request is enough.
1788
*/
1789
if (blk_do_io_stat(req) && !(req->cmd_flags & REQ_FLUSH_SEQ)) {
1790
unsigned long duration = jiffies - req->start_time;
1791
const int rw = rq_data_dir(req);
1792
struct hd_struct *part;
1793
int cpu;
1794
1795
cpu = part_stat_lock();
1796
part = req->part;
1797
1798
part_stat_inc(cpu, part, ios[rw]);
1799
part_stat_add(cpu, part, ticks[rw], duration);
1800
part_round_stats(cpu, part);
1801
part_dec_in_flight(part, rw);
1802
1803
hd_struct_put(part);
1804
part_stat_unlock();
1805
}
1806
}
1807
1808
/**
1809
* blk_peek_request - peek at the top of a request queue
1810
* @q: request queue to peek at
1811
*
1812
* Description:
1813
* Return the request at the top of @q. The returned request
1814
* should be started using blk_start_request() before LLD starts
1815
* processing it.
1816
*
1817
* Return:
1818
* Pointer to the request at the top of @q if available. Null
1819
* otherwise.
1820
*
1821
* Context:
1822
* queue_lock must be held.
1823
*/
1824
struct request *blk_peek_request(struct request_queue *q)
1825
{
1826
struct request *rq;
1827
int ret;
1828
1829
while ((rq = __elv_next_request(q)) != NULL) {
1830
if (!(rq->cmd_flags & REQ_STARTED)) {
1831
/*
1832
* This is the first time the device driver
1833
* sees this request (possibly after
1834
* requeueing). Notify IO scheduler.
1835
*/
1836
if (rq->cmd_flags & REQ_SORTED)
1837
elv_activate_rq(q, rq);
1838
1839
/*
1840
* just mark as started even if we don't start
1841
* it, a request that has been delayed should
1842
* not be passed by new incoming requests
1843
*/
1844
rq->cmd_flags |= REQ_STARTED;
1845
trace_block_rq_issue(q, rq);
1846
}
1847
1848
if (!q->boundary_rq || q->boundary_rq == rq) {
1849
q->end_sector = rq_end_sector(rq);
1850
q->boundary_rq = NULL;
1851
}
1852
1853
if (rq->cmd_flags & REQ_DONTPREP)
1854
break;
1855
1856
if (q->dma_drain_size && blk_rq_bytes(rq)) {
1857
/*
1858
* make sure space for the drain appears we
1859
* know we can do this because max_hw_segments
1860
* has been adjusted to be one fewer than the
1861
* device can handle
1862
*/
1863
rq->nr_phys_segments++;
1864
}
1865
1866
if (!q->prep_rq_fn)
1867
break;
1868
1869
ret = q->prep_rq_fn(q, rq);
1870
if (ret == BLKPREP_OK) {
1871
break;
1872
} else if (ret == BLKPREP_DEFER) {
1873
/*
1874
* the request may have been (partially) prepped.
1875
* we need to keep this request in the front to
1876
* avoid resource deadlock. REQ_STARTED will
1877
* prevent other fs requests from passing this one.
1878
*/
1879
if (q->dma_drain_size && blk_rq_bytes(rq) &&
1880
!(rq->cmd_flags & REQ_DONTPREP)) {
1881
/*
1882
* remove the space for the drain we added
1883
* so that we don't add it again
1884
*/
1885
--rq->nr_phys_segments;
1886
}
1887
1888
rq = NULL;
1889
break;
1890
} else if (ret == BLKPREP_KILL) {
1891
rq->cmd_flags |= REQ_QUIET;
1892
/*
1893
* Mark this request as started so we don't trigger
1894
* any debug logic in the end I/O path.
1895
*/
1896
blk_start_request(rq);
1897
__blk_end_request_all(rq, -EIO);
1898
} else {
1899
printk(KERN_ERR "%s: bad return=%d\n", __func__, ret);
1900
break;
1901
}
1902
}
1903
1904
return rq;
1905
}
1906
EXPORT_SYMBOL(blk_peek_request);
1907
1908
void blk_dequeue_request(struct request *rq)
1909
{
1910
struct request_queue *q = rq->q;
1911
1912
BUG_ON(list_empty(&rq->queuelist));
1913
BUG_ON(ELV_ON_HASH(rq));
1914
1915
list_del_init(&rq->queuelist);
1916
1917
/*
1918
* the time frame between a request being removed from the lists
1919
* and to it is freed is accounted as io that is in progress at
1920
* the driver side.
1921
*/
1922
if (blk_account_rq(rq)) {
1923
q->in_flight[rq_is_sync(rq)]++;
1924
set_io_start_time_ns(rq);
1925
}
1926
}
1927
1928
/**
1929
* blk_start_request - start request processing on the driver
1930
* @req: request to dequeue
1931
*
1932
* Description:
1933
* Dequeue @req and start timeout timer on it. This hands off the
1934
* request to the driver.
1935
*
1936
* Block internal functions which don't want to start timer should
1937
* call blk_dequeue_request().
1938
*
1939
* Context:
1940
* queue_lock must be held.
1941
*/
1942
void blk_start_request(struct request *req)
1943
{
1944
blk_dequeue_request(req);
1945
1946
/*
1947
* We are now handing the request to the hardware, initialize
1948
* resid_len to full count and add the timeout handler.
1949
*/
1950
req->resid_len = blk_rq_bytes(req);
1951
if (unlikely(blk_bidi_rq(req)))
1952
req->next_rq->resid_len = blk_rq_bytes(req->next_rq);
1953
1954
blk_add_timer(req);
1955
}
1956
EXPORT_SYMBOL(blk_start_request);
1957
1958
/**
1959
* blk_fetch_request - fetch a request from a request queue
1960
* @q: request queue to fetch a request from
1961
*
1962
* Description:
1963
* Return the request at the top of @q. The request is started on
1964
* return and LLD can start processing it immediately.
1965
*
1966
* Return:
1967
* Pointer to the request at the top of @q if available. Null
1968
* otherwise.
1969
*
1970
* Context:
1971
* queue_lock must be held.
1972
*/
1973
struct request *blk_fetch_request(struct request_queue *q)
1974
{
1975
struct request *rq;
1976
1977
rq = blk_peek_request(q);
1978
if (rq)
1979
blk_start_request(rq);
1980
return rq;
1981
}
1982
EXPORT_SYMBOL(blk_fetch_request);
1983
1984
/**
1985
* blk_update_request - Special helper function for request stacking drivers
1986
* @req: the request being processed
1987
* @error: %0 for success, < %0 for error
1988
* @nr_bytes: number of bytes to complete @req
1989
*
1990
* Description:
1991
* Ends I/O on a number of bytes attached to @req, but doesn't complete
1992
* the request structure even if @req doesn't have leftover.
1993
* If @req has leftover, sets it up for the next range of segments.
1994
*
1995
* This special helper function is only for request stacking drivers
1996
* (e.g. request-based dm) so that they can handle partial completion.
1997
* Actual device drivers should use blk_end_request instead.
1998
*
1999
* Passing the result of blk_rq_bytes() as @nr_bytes guarantees
2000
* %false return from this function.
2001
*
2002
* Return:
2003
* %false - this request doesn't have any more data
2004
* %true - this request has more data
2005
**/
2006
bool blk_update_request(struct request *req, int error, unsigned int nr_bytes)
2007
{
2008
int total_bytes, bio_nbytes, next_idx = 0;
2009
struct bio *bio;
2010
2011
if (!req->bio)
2012
return false;
2013
2014
trace_block_rq_complete(req->q, req);
2015
2016
/*
2017
* For fs requests, rq is just carrier of independent bio's
2018
* and each partial completion should be handled separately.
2019
* Reset per-request error on each partial completion.
2020
*
2021
* TODO: tj: This is too subtle. It would be better to let
2022
* low level drivers do what they see fit.
2023
*/
2024
if (req->cmd_type == REQ_TYPE_FS)
2025
req->errors = 0;
2026
2027
if (error && req->cmd_type == REQ_TYPE_FS &&
2028
!(req->cmd_flags & REQ_QUIET)) {
2029
char *error_type;
2030
2031
switch (error) {
2032
case -ENOLINK:
2033
error_type = "recoverable transport";
2034
break;
2035
case -EREMOTEIO:
2036
error_type = "critical target";
2037
break;
2038
case -EBADE:
2039
error_type = "critical nexus";
2040
break;
2041
case -EIO:
2042
default:
2043
error_type = "I/O";
2044
break;
2045
}
2046
printk(KERN_ERR "end_request: %s error, dev %s, sector %llu\n",
2047
error_type, req->rq_disk ? req->rq_disk->disk_name : "?",
2048
(unsigned long long)blk_rq_pos(req));
2049
}
2050
2051
blk_account_io_completion(req, nr_bytes);
2052
2053
total_bytes = bio_nbytes = 0;
2054
while ((bio = req->bio) != NULL) {
2055
int nbytes;
2056
2057
if (nr_bytes >= bio->bi_size) {
2058
req->bio = bio->bi_next;
2059
nbytes = bio->bi_size;
2060
req_bio_endio(req, bio, nbytes, error);
2061
next_idx = 0;
2062
bio_nbytes = 0;
2063
} else {
2064
int idx = bio->bi_idx + next_idx;
2065
2066
if (unlikely(idx >= bio->bi_vcnt)) {
2067
blk_dump_rq_flags(req, "__end_that");
2068
printk(KERN_ERR "%s: bio idx %d >= vcnt %d\n",
2069
__func__, idx, bio->bi_vcnt);
2070
break;
2071
}
2072
2073
nbytes = bio_iovec_idx(bio, idx)->bv_len;
2074
BIO_BUG_ON(nbytes > bio->bi_size);
2075
2076
/*
2077
* not a complete bvec done
2078
*/
2079
if (unlikely(nbytes > nr_bytes)) {
2080
bio_nbytes += nr_bytes;
2081
total_bytes += nr_bytes;
2082
break;
2083
}
2084
2085
/*
2086
* advance to the next vector
2087
*/
2088
next_idx++;
2089
bio_nbytes += nbytes;
2090
}
2091
2092
total_bytes += nbytes;
2093
nr_bytes -= nbytes;
2094
2095
bio = req->bio;
2096
if (bio) {
2097
/*
2098
* end more in this run, or just return 'not-done'
2099
*/
2100
if (unlikely(nr_bytes <= 0))
2101
break;
2102
}
2103
}
2104
2105
/*
2106
* completely done
2107
*/
2108
if (!req->bio) {
2109
/*
2110
* Reset counters so that the request stacking driver
2111
* can find how many bytes remain in the request
2112
* later.
2113
*/
2114
req->__data_len = 0;
2115
return false;
2116
}
2117
2118
/*
2119
* if the request wasn't completed, update state
2120
*/
2121
if (bio_nbytes) {
2122
req_bio_endio(req, bio, bio_nbytes, error);
2123
bio->bi_idx += next_idx;
2124
bio_iovec(bio)->bv_offset += nr_bytes;
2125
bio_iovec(bio)->bv_len -= nr_bytes;
2126
}
2127
2128
req->__data_len -= total_bytes;
2129
req->buffer = bio_data(req->bio);
2130
2131
/* update sector only for requests with clear definition of sector */
2132
if (req->cmd_type == REQ_TYPE_FS || (req->cmd_flags & REQ_DISCARD))
2133
req->__sector += total_bytes >> 9;
2134
2135
/* mixed attributes always follow the first bio */
2136
if (req->cmd_flags & REQ_MIXED_MERGE) {
2137
req->cmd_flags &= ~REQ_FAILFAST_MASK;
2138
req->cmd_flags |= req->bio->bi_rw & REQ_FAILFAST_MASK;
2139
}
2140
2141
/*
2142
* If total number of sectors is less than the first segment
2143
* size, something has gone terribly wrong.
2144
*/
2145
if (blk_rq_bytes(req) < blk_rq_cur_bytes(req)) {
2146
blk_dump_rq_flags(req, "request botched");
2147
req->__data_len = blk_rq_cur_bytes(req);
2148
}
2149
2150
/* recalculate the number of segments */
2151
blk_recalc_rq_segments(req);
2152
2153
return true;
2154
}
2155
EXPORT_SYMBOL_GPL(blk_update_request);
2156
2157
static bool blk_update_bidi_request(struct request *rq, int error,
2158
unsigned int nr_bytes,
2159
unsigned int bidi_bytes)
2160
{
2161
if (blk_update_request(rq, error, nr_bytes))
2162
return true;
2163
2164
/* Bidi request must be completed as a whole */
2165
if (unlikely(blk_bidi_rq(rq)) &&
2166
blk_update_request(rq->next_rq, error, bidi_bytes))
2167
return true;
2168
2169
if (blk_queue_add_random(rq->q))
2170
add_disk_randomness(rq->rq_disk);
2171
2172
return false;
2173
}
2174
2175
/**
2176
* blk_unprep_request - unprepare a request
2177
* @req: the request
2178
*
2179
* This function makes a request ready for complete resubmission (or
2180
* completion). It happens only after all error handling is complete,
2181
* so represents the appropriate moment to deallocate any resources
2182
* that were allocated to the request in the prep_rq_fn. The queue
2183
* lock is held when calling this.
2184
*/
2185
void blk_unprep_request(struct request *req)
2186
{
2187
struct request_queue *q = req->q;
2188
2189
req->cmd_flags &= ~REQ_DONTPREP;
2190
if (q->unprep_rq_fn)
2191
q->unprep_rq_fn(q, req);
2192
}
2193
EXPORT_SYMBOL_GPL(blk_unprep_request);
2194
2195
/*
2196
* queue lock must be held
2197
*/
2198
static void blk_finish_request(struct request *req, int error)
2199
{
2200
if (blk_rq_tagged(req))
2201
blk_queue_end_tag(req->q, req);
2202
2203
BUG_ON(blk_queued_rq(req));
2204
2205
if (unlikely(laptop_mode) && req->cmd_type == REQ_TYPE_FS)
2206
laptop_io_completion(&req->q->backing_dev_info);
2207
2208
blk_delete_timer(req);
2209
2210
if (req->cmd_flags & REQ_DONTPREP)
2211
blk_unprep_request(req);
2212
2213
2214
blk_account_io_done(req);
2215
2216
if (req->end_io)
2217
req->end_io(req, error);
2218
else {
2219
if (blk_bidi_rq(req))
2220
__blk_put_request(req->next_rq->q, req->next_rq);
2221
2222
__blk_put_request(req->q, req);
2223
}
2224
}
2225
2226
/**
2227
* blk_end_bidi_request - Complete a bidi request
2228
* @rq: the request to complete
2229
* @error: %0 for success, < %0 for error
2230
* @nr_bytes: number of bytes to complete @rq
2231
* @bidi_bytes: number of bytes to complete @rq->next_rq
2232
*
2233
* Description:
2234
* Ends I/O on a number of bytes attached to @rq and @rq->next_rq.
2235
* Drivers that supports bidi can safely call this member for any
2236
* type of request, bidi or uni. In the later case @bidi_bytes is
2237
* just ignored.
2238
*
2239
* Return:
2240
* %false - we are done with this request
2241
* %true - still buffers pending for this request
2242
**/
2243
static bool blk_end_bidi_request(struct request *rq, int error,
2244
unsigned int nr_bytes, unsigned int bidi_bytes)
2245
{
2246
struct request_queue *q = rq->q;
2247
unsigned long flags;
2248
2249
if (blk_update_bidi_request(rq, error, nr_bytes, bidi_bytes))
2250
return true;
2251
2252
spin_lock_irqsave(q->queue_lock, flags);
2253
blk_finish_request(rq, error);
2254
spin_unlock_irqrestore(q->queue_lock, flags);
2255
2256
return false;
2257
}
2258
2259
/**
2260
* __blk_end_bidi_request - Complete a bidi request with queue lock held
2261
* @rq: the request to complete
2262
* @error: %0 for success, < %0 for error
2263
* @nr_bytes: number of bytes to complete @rq
2264
* @bidi_bytes: number of bytes to complete @rq->next_rq
2265
*
2266
* Description:
2267
* Identical to blk_end_bidi_request() except that queue lock is
2268
* assumed to be locked on entry and remains so on return.
2269
*
2270
* Return:
2271
* %false - we are done with this request
2272
* %true - still buffers pending for this request
2273
**/
2274
static bool __blk_end_bidi_request(struct request *rq, int error,
2275
unsigned int nr_bytes, unsigned int bidi_bytes)
2276
{
2277
if (blk_update_bidi_request(rq, error, nr_bytes, bidi_bytes))
2278
return true;
2279
2280
blk_finish_request(rq, error);
2281
2282
return false;
2283
}
2284
2285
/**
2286
* blk_end_request - Helper function for drivers to complete the request.
2287
* @rq: the request being processed
2288
* @error: %0 for success, < %0 for error
2289
* @nr_bytes: number of bytes to complete
2290
*
2291
* Description:
2292
* Ends I/O on a number of bytes attached to @rq.
2293
* If @rq has leftover, sets it up for the next range of segments.
2294
*
2295
* Return:
2296
* %false - we are done with this request
2297
* %true - still buffers pending for this request
2298
**/
2299
bool blk_end_request(struct request *rq, int error, unsigned int nr_bytes)
2300
{
2301
return blk_end_bidi_request(rq, error, nr_bytes, 0);
2302
}
2303
EXPORT_SYMBOL(blk_end_request);
2304
2305
/**
2306
* blk_end_request_all - Helper function for drives to finish the request.
2307
* @rq: the request to finish
2308
* @error: %0 for success, < %0 for error
2309
*
2310
* Description:
2311
* Completely finish @rq.
2312
*/
2313
void blk_end_request_all(struct request *rq, int error)
2314
{
2315
bool pending;
2316
unsigned int bidi_bytes = 0;
2317
2318
if (unlikely(blk_bidi_rq(rq)))
2319
bidi_bytes = blk_rq_bytes(rq->next_rq);
2320
2321
pending = blk_end_bidi_request(rq, error, blk_rq_bytes(rq), bidi_bytes);
2322
BUG_ON(pending);
2323
}
2324
EXPORT_SYMBOL(blk_end_request_all);
2325
2326
/**
2327
* blk_end_request_cur - Helper function to finish the current request chunk.
2328
* @rq: the request to finish the current chunk for
2329
* @error: %0 for success, < %0 for error
2330
*
2331
* Description:
2332
* Complete the current consecutively mapped chunk from @rq.
2333
*
2334
* Return:
2335
* %false - we are done with this request
2336
* %true - still buffers pending for this request
2337
*/
2338
bool blk_end_request_cur(struct request *rq, int error)
2339
{
2340
return blk_end_request(rq, error, blk_rq_cur_bytes(rq));
2341
}
2342
EXPORT_SYMBOL(blk_end_request_cur);
2343
2344
/**
2345
* blk_end_request_err - Finish a request till the next failure boundary.
2346
* @rq: the request to finish till the next failure boundary for
2347
* @error: must be negative errno
2348
*
2349
* Description:
2350
* Complete @rq till the next failure boundary.
2351
*
2352
* Return:
2353
* %false - we are done with this request
2354
* %true - still buffers pending for this request
2355
*/
2356
bool blk_end_request_err(struct request *rq, int error)
2357
{
2358
WARN_ON(error >= 0);
2359
return blk_end_request(rq, error, blk_rq_err_bytes(rq));
2360
}
2361
EXPORT_SYMBOL_GPL(blk_end_request_err);
2362
2363
/**
2364
* __blk_end_request - Helper function for drivers to complete the request.
2365
* @rq: the request being processed
2366
* @error: %0 for success, < %0 for error
2367
* @nr_bytes: number of bytes to complete
2368
*
2369
* Description:
2370
* Must be called with queue lock held unlike blk_end_request().
2371
*
2372
* Return:
2373
* %false - we are done with this request
2374
* %true - still buffers pending for this request
2375
**/
2376
bool __blk_end_request(struct request *rq, int error, unsigned int nr_bytes)
2377
{
2378
return __blk_end_bidi_request(rq, error, nr_bytes, 0);
2379
}
2380
EXPORT_SYMBOL(__blk_end_request);
2381
2382
/**
2383
* __blk_end_request_all - Helper function for drives to finish the request.
2384
* @rq: the request to finish
2385
* @error: %0 for success, < %0 for error
2386
*
2387
* Description:
2388
* Completely finish @rq. Must be called with queue lock held.
2389
*/
2390
void __blk_end_request_all(struct request *rq, int error)
2391
{
2392
bool pending;
2393
unsigned int bidi_bytes = 0;
2394
2395
if (unlikely(blk_bidi_rq(rq)))
2396
bidi_bytes = blk_rq_bytes(rq->next_rq);
2397
2398
pending = __blk_end_bidi_request(rq, error, blk_rq_bytes(rq), bidi_bytes);
2399
BUG_ON(pending);
2400
}
2401
EXPORT_SYMBOL(__blk_end_request_all);
2402
2403
/**
2404
* __blk_end_request_cur - Helper function to finish the current request chunk.
2405
* @rq: the request to finish the current chunk for
2406
* @error: %0 for success, < %0 for error
2407
*
2408
* Description:
2409
* Complete the current consecutively mapped chunk from @rq. Must
2410
* be called with queue lock held.
2411
*
2412
* Return:
2413
* %false - we are done with this request
2414
* %true - still buffers pending for this request
2415
*/
2416
bool __blk_end_request_cur(struct request *rq, int error)
2417
{
2418
return __blk_end_request(rq, error, blk_rq_cur_bytes(rq));
2419
}
2420
EXPORT_SYMBOL(__blk_end_request_cur);
2421
2422
/**
2423
* __blk_end_request_err - Finish a request till the next failure boundary.
2424
* @rq: the request to finish till the next failure boundary for
2425
* @error: must be negative errno
2426
*
2427
* Description:
2428
* Complete @rq till the next failure boundary. Must be called
2429
* with queue lock held.
2430
*
2431
* Return:
2432
* %false - we are done with this request
2433
* %true - still buffers pending for this request
2434
*/
2435
bool __blk_end_request_err(struct request *rq, int error)
2436
{
2437
WARN_ON(error >= 0);
2438
return __blk_end_request(rq, error, blk_rq_err_bytes(rq));
2439
}
2440
EXPORT_SYMBOL_GPL(__blk_end_request_err);
2441
2442
void blk_rq_bio_prep(struct request_queue *q, struct request *rq,
2443
struct bio *bio)
2444
{
2445
/* Bit 0 (R/W) is identical in rq->cmd_flags and bio->bi_rw */
2446
rq->cmd_flags |= bio->bi_rw & REQ_WRITE;
2447
2448
if (bio_has_data(bio)) {
2449
rq->nr_phys_segments = bio_phys_segments(q, bio);
2450
rq->buffer = bio_data(bio);
2451
}
2452
rq->__data_len = bio->bi_size;
2453
rq->bio = rq->biotail = bio;
2454
2455
if (bio->bi_bdev)
2456
rq->rq_disk = bio->bi_bdev->bd_disk;
2457
}
2458
2459
#if ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE
2460
/**
2461
* rq_flush_dcache_pages - Helper function to flush all pages in a request
2462
* @rq: the request to be flushed
2463
*
2464
* Description:
2465
* Flush all pages in @rq.
2466
*/
2467
void rq_flush_dcache_pages(struct request *rq)
2468
{
2469
struct req_iterator iter;
2470
struct bio_vec *bvec;
2471
2472
rq_for_each_segment(bvec, rq, iter)
2473
flush_dcache_page(bvec->bv_page);
2474
}
2475
EXPORT_SYMBOL_GPL(rq_flush_dcache_pages);
2476
#endif
2477
2478
/**
2479
* blk_lld_busy - Check if underlying low-level drivers of a device are busy
2480
* @q : the queue of the device being checked
2481
*
2482
* Description:
2483
* Check if underlying low-level drivers of a device are busy.
2484
* If the drivers want to export their busy state, they must set own
2485
* exporting function using blk_queue_lld_busy() first.
2486
*
2487
* Basically, this function is used only by request stacking drivers
2488
* to stop dispatching requests to underlying devices when underlying
2489
* devices are busy. This behavior helps more I/O merging on the queue
2490
* of the request stacking driver and prevents I/O throughput regression
2491
* on burst I/O load.
2492
*
2493
* Return:
2494
* 0 - Not busy (The request stacking driver should dispatch request)
2495
* 1 - Busy (The request stacking driver should stop dispatching request)
2496
*/
2497
int blk_lld_busy(struct request_queue *q)
2498
{
2499
if (q->lld_busy_fn)
2500
return q->lld_busy_fn(q);
2501
2502
return 0;
2503
}
2504
EXPORT_SYMBOL_GPL(blk_lld_busy);
2505
2506
/**
2507
* blk_rq_unprep_clone - Helper function to free all bios in a cloned request
2508
* @rq: the clone request to be cleaned up
2509
*
2510
* Description:
2511
* Free all bios in @rq for a cloned request.
2512
*/
2513
void blk_rq_unprep_clone(struct request *rq)
2514
{
2515
struct bio *bio;
2516
2517
while ((bio = rq->bio) != NULL) {
2518
rq->bio = bio->bi_next;
2519
2520
bio_put(bio);
2521
}
2522
}
2523
EXPORT_SYMBOL_GPL(blk_rq_unprep_clone);
2524
2525
/*
2526
* Copy attributes of the original request to the clone request.
2527
* The actual data parts (e.g. ->cmd, ->buffer, ->sense) are not copied.
2528
*/
2529
static void __blk_rq_prep_clone(struct request *dst, struct request *src)
2530
{
2531
dst->cpu = src->cpu;
2532
dst->cmd_flags = (src->cmd_flags & REQ_CLONE_MASK) | REQ_NOMERGE;
2533
dst->cmd_type = src->cmd_type;
2534
dst->__sector = blk_rq_pos(src);
2535
dst->__data_len = blk_rq_bytes(src);
2536
dst->nr_phys_segments = src->nr_phys_segments;
2537
dst->ioprio = src->ioprio;
2538
dst->extra_len = src->extra_len;
2539
}
2540
2541
/**
2542
* blk_rq_prep_clone - Helper function to setup clone request
2543
* @rq: the request to be setup
2544
* @rq_src: original request to be cloned
2545
* @bs: bio_set that bios for clone are allocated from
2546
* @gfp_mask: memory allocation mask for bio
2547
* @bio_ctr: setup function to be called for each clone bio.
2548
* Returns %0 for success, non %0 for failure.
2549
* @data: private data to be passed to @bio_ctr
2550
*
2551
* Description:
2552
* Clones bios in @rq_src to @rq, and copies attributes of @rq_src to @rq.
2553
* The actual data parts of @rq_src (e.g. ->cmd, ->buffer, ->sense)
2554
* are not copied, and copying such parts is the caller's responsibility.
2555
* Also, pages which the original bios are pointing to are not copied
2556
* and the cloned bios just point same pages.
2557
* So cloned bios must be completed before original bios, which means
2558
* the caller must complete @rq before @rq_src.
2559
*/
2560
int blk_rq_prep_clone(struct request *rq, struct request *rq_src,
2561
struct bio_set *bs, gfp_t gfp_mask,
2562
int (*bio_ctr)(struct bio *, struct bio *, void *),
2563
void *data)
2564
{
2565
struct bio *bio, *bio_src;
2566
2567
if (!bs)
2568
bs = fs_bio_set;
2569
2570
blk_rq_init(NULL, rq);
2571
2572
__rq_for_each_bio(bio_src, rq_src) {
2573
bio = bio_alloc_bioset(gfp_mask, bio_src->bi_max_vecs, bs);
2574
if (!bio)
2575
goto free_and_out;
2576
2577
__bio_clone(bio, bio_src);
2578
2579
if (bio_integrity(bio_src) &&
2580
bio_integrity_clone(bio, bio_src, gfp_mask, bs))
2581
goto free_and_out;
2582
2583
if (bio_ctr && bio_ctr(bio, bio_src, data))
2584
goto free_and_out;
2585
2586
if (rq->bio) {
2587
rq->biotail->bi_next = bio;
2588
rq->biotail = bio;
2589
} else
2590
rq->bio = rq->biotail = bio;
2591
}
2592
2593
__blk_rq_prep_clone(rq, rq_src);
2594
2595
return 0;
2596
2597
free_and_out:
2598
if (bio)
2599
bio_free(bio, bs);
2600
blk_rq_unprep_clone(rq);
2601
2602
return -ENOMEM;
2603
}
2604
EXPORT_SYMBOL_GPL(blk_rq_prep_clone);
2605
2606
int kblockd_schedule_work(struct request_queue *q, struct work_struct *work)
2607
{
2608
return queue_work(kblockd_workqueue, work);
2609
}
2610
EXPORT_SYMBOL(kblockd_schedule_work);
2611
2612
int kblockd_schedule_delayed_work(struct request_queue *q,
2613
struct delayed_work *dwork, unsigned long delay)
2614
{
2615
return queue_delayed_work(kblockd_workqueue, dwork, delay);
2616
}
2617
EXPORT_SYMBOL(kblockd_schedule_delayed_work);
2618
2619
#define PLUG_MAGIC 0x91827364
2620
2621
void blk_start_plug(struct blk_plug *plug)
2622
{
2623
struct task_struct *tsk = current;
2624
2625
plug->magic = PLUG_MAGIC;
2626
INIT_LIST_HEAD(&plug->list);
2627
INIT_LIST_HEAD(&plug->cb_list);
2628
plug->should_sort = 0;
2629
2630
/*
2631
* If this is a nested plug, don't actually assign it. It will be
2632
* flushed on its own.
2633
*/
2634
if (!tsk->plug) {
2635
/*
2636
* Store ordering should not be needed here, since a potential
2637
* preempt will imply a full memory barrier
2638
*/
2639
tsk->plug = plug;
2640
}
2641
}
2642
EXPORT_SYMBOL(blk_start_plug);
2643
2644
static int plug_rq_cmp(void *priv, struct list_head *a, struct list_head *b)
2645
{
2646
struct request *rqa = container_of(a, struct request, queuelist);
2647
struct request *rqb = container_of(b, struct request, queuelist);
2648
2649
return !(rqa->q <= rqb->q);
2650
}
2651
2652
/*
2653
* If 'from_schedule' is true, then postpone the dispatch of requests
2654
* until a safe kblockd context. We due this to avoid accidental big
2655
* additional stack usage in driver dispatch, in places where the originally
2656
* plugger did not intend it.
2657
*/
2658
static void queue_unplugged(struct request_queue *q, unsigned int depth,
2659
bool from_schedule)
2660
__releases(q->queue_lock)
2661
{
2662
trace_block_unplug(q, depth, !from_schedule);
2663
2664
/*
2665
* If we are punting this to kblockd, then we can safely drop
2666
* the queue_lock before waking kblockd (which needs to take
2667
* this lock).
2668
*/
2669
if (from_schedule) {
2670
spin_unlock(q->queue_lock);
2671
blk_run_queue_async(q);
2672
} else {
2673
__blk_run_queue(q);
2674
spin_unlock(q->queue_lock);
2675
}
2676
2677
}
2678
2679
static void flush_plug_callbacks(struct blk_plug *plug)
2680
{
2681
LIST_HEAD(callbacks);
2682
2683
if (list_empty(&plug->cb_list))
2684
return;
2685
2686
list_splice_init(&plug->cb_list, &callbacks);
2687
2688
while (!list_empty(&callbacks)) {
2689
struct blk_plug_cb *cb = list_first_entry(&callbacks,
2690
struct blk_plug_cb,
2691
list);
2692
list_del(&cb->list);
2693
cb->callback(cb);
2694
}
2695
}
2696
2697
void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
2698
{
2699
struct request_queue *q;
2700
unsigned long flags;
2701
struct request *rq;
2702
LIST_HEAD(list);
2703
unsigned int depth;
2704
2705
BUG_ON(plug->magic != PLUG_MAGIC);
2706
2707
flush_plug_callbacks(plug);
2708
if (list_empty(&plug->list))
2709
return;
2710
2711
list_splice_init(&plug->list, &list);
2712
2713
if (plug->should_sort) {
2714
list_sort(NULL, &list, plug_rq_cmp);
2715
plug->should_sort = 0;
2716
}
2717
2718
q = NULL;
2719
depth = 0;
2720
2721
/*
2722
* Save and disable interrupts here, to avoid doing it for every
2723
* queue lock we have to take.
2724
*/
2725
local_irq_save(flags);
2726
while (!list_empty(&list)) {
2727
rq = list_entry_rq(list.next);
2728
list_del_init(&rq->queuelist);
2729
BUG_ON(!rq->q);
2730
if (rq->q != q) {
2731
/*
2732
* This drops the queue lock
2733
*/
2734
if (q)
2735
queue_unplugged(q, depth, from_schedule);
2736
q = rq->q;
2737
depth = 0;
2738
spin_lock(q->queue_lock);
2739
}
2740
/*
2741
* rq is already accounted, so use raw insert
2742
*/
2743
if (rq->cmd_flags & (REQ_FLUSH | REQ_FUA))
2744
__elv_add_request(q, rq, ELEVATOR_INSERT_FLUSH);
2745
else
2746
__elv_add_request(q, rq, ELEVATOR_INSERT_SORT_MERGE);
2747
2748
depth++;
2749
}
2750
2751
/*
2752
* This drops the queue lock
2753
*/
2754
if (q)
2755
queue_unplugged(q, depth, from_schedule);
2756
2757
local_irq_restore(flags);
2758
}
2759
2760
void blk_finish_plug(struct blk_plug *plug)
2761
{
2762
blk_flush_plug_list(plug, false);
2763
2764
if (plug == current->plug)
2765
current->plug = NULL;
2766
}
2767
EXPORT_SYMBOL(blk_finish_plug);
2768
2769
int __init blk_dev_init(void)
2770
{
2771
BUILD_BUG_ON(__REQ_NR_BITS > 8 *
2772
sizeof(((struct request *)0)->cmd_flags));
2773
2774
/* used for unplugging and affects IO latency/throughput - HIGHPRI */
2775
kblockd_workqueue = alloc_workqueue("kblockd",
2776
WQ_MEM_RECLAIM | WQ_HIGHPRI, 0);
2777
if (!kblockd_workqueue)
2778
panic("Failed to create kblockd\n");
2779
2780
request_cachep = kmem_cache_create("blkdev_requests",
2781
sizeof(struct request), 0, SLAB_PANIC, NULL);
2782
2783
blk_requestq_cachep = kmem_cache_create("blkdev_queue",
2784
sizeof(struct request_queue), 0, SLAB_PANIC, NULL);
2785
2786
return 0;
2787
}
2788
2789