diff options
-rw-r--r-- | block/blk-core.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/block/blk-core.c b/block/blk-core.c index bec1d69952d0..49065075d462 100644 --- a/block/blk-core.c +++ b/block/blk-core.c | |||
@@ -910,6 +910,15 @@ EXPORT_SYMBOL(blk_get_request); | |||
910 | * need bouncing, by calling the appropriate masked or flagged allocator, | 910 | * need bouncing, by calling the appropriate masked or flagged allocator, |
911 | * suitable for the target device. Otherwise the call to blk_queue_bounce will | 911 | * suitable for the target device. Otherwise the call to blk_queue_bounce will |
912 | * BUG. | 912 | * BUG. |
913 | * | ||
914 | * WARNING: When allocating/cloning a bio-chain, careful consideration should be | ||
915 | * given to how you allocate bios. In particular, you cannot use __GFP_WAIT for | ||
916 | * anything but the first bio in the chain. Otherwise you risk waiting for IO | ||
917 | * completion of a bio that hasn't been submitted yet, thus resulting in a | ||
918 | * deadlock. Alternatively bios should be allocated using bio_kmalloc() instead | ||
919 | * of bio_alloc(), as that avoids the mempool deadlock. | ||
920 | * If possible a big IO should be split into smaller parts when allocation | ||
921 | * fails. Partial allocation should not be an error, or you risk a live-lock. | ||
913 | */ | 922 | */ |
914 | struct request *blk_make_request(struct request_queue *q, struct bio *bio, | 923 | struct request *blk_make_request(struct request_queue *q, struct bio *bio, |
915 | gfp_t gfp_mask) | 924 | gfp_t gfp_mask) |