diff options
Diffstat (limited to 'fs/bio.c')
| -rw-r--r-- | fs/bio.c | 11 | 
1 files changed, 5 insertions, 6 deletions
@@ -264,13 +264,12 @@ EXPORT_SYMBOL(bio_init);   * bio_alloc_bioset - allocate a bio for I/O   * @gfp_mask:   the GFP_ mask given to the slab allocator   * @nr_iovecs:	number of iovecs to pre-allocate - * @bs:		the bio_set to allocate from. If %NULL, just use kmalloc + * @bs:		the bio_set to allocate from.   *   * Description: - *   bio_alloc_bioset will first try its own mempool to satisfy the allocation. + *   bio_alloc_bioset will try its own mempool to satisfy the allocation.   *   If %__GFP_WAIT is set then we will block on the internal pool waiting - *   for a &struct bio to become free. If a %NULL @bs is passed in, we will - *   fall back to just using @kmalloc to allocate the required memory. + *   for a &struct bio to become free.   *   *   Note that the caller must set ->bi_destructor on successful return   *   of a bio, to do the appropriate freeing of the bio once the reference @@ -555,7 +554,7 @@ static int __bio_add_page(struct request_queue *q, struct bio *bio, struct page  					.bi_rw = bio->bi_rw,  				}; -				if (q->merge_bvec_fn(q, &bvm, prev) < len) { +				if (q->merge_bvec_fn(q, &bvm, prev) < prev->bv_len) {  					prev->bv_len -= len;  					return 0;  				} @@ -608,7 +607,7 @@ static int __bio_add_page(struct request_queue *q, struct bio *bio, struct page  		 * merge_bvec_fn() returns number of bytes it can accept  		 * at this offset  		 */ -		if (q->merge_bvec_fn(q, &bvm, bvec) < len) { +		if (q->merge_bvec_fn(q, &bvm, bvec) < bvec->bv_len) {  			bvec->bv_page = NULL;  			bvec->bv_len = 0;  			bvec->bv_offset = 0;  |