diff options
-rw-r--r-- | fs/bio.c | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -348,6 +348,24 @@ err: | |||
348 | return NULL; | 348 | return NULL; |
349 | } | 349 | } |
350 | 350 | ||
351 | /** | ||
352 | * bio_alloc - allocate a bio for I/O | ||
353 | * @gfp_mask: the GFP_ mask given to the slab allocator | ||
354 | * @nr_iovecs: number of iovecs to pre-allocate | ||
355 | * | ||
356 | * Description: | ||
357 | * bio_alloc will allocate a bio and associated bio_vec array that can hold | ||
358 | * at least @nr_iovecs entries. Allocations will be done from the | ||
359 | * fs_bio_set. Also see @bio_alloc_bioset. | ||
360 | * | ||
361 | * If %__GFP_WAIT is set, then bio_alloc will always be able to allocate | ||
362 | * a bio. This is due to the mempool guarantees. To make this work, callers | ||
363 | * must never allocate more than 1 bio at the time from this pool. Callers | ||
364 | * that need to allocate more than 1 bio must always submit the previously | ||
365 | * allocate bio for IO before attempting to allocate a new one. Failure to | ||
366 | * do so can cause livelocks under memory pressure. | ||
367 | * | ||
368 | **/ | ||
351 | struct bio *bio_alloc(gfp_t gfp_mask, int nr_iovecs) | 369 | struct bio *bio_alloc(gfp_t gfp_mask, int nr_iovecs) |
352 | { | 370 | { |
353 | struct bio *bio = bio_alloc_bioset(gfp_mask, nr_iovecs, fs_bio_set); | 371 | struct bio *bio = bio_alloc_bioset(gfp_mask, nr_iovecs, fs_bio_set); |