aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/scsi_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/scsi_lib.c')
-rw-r--r--drivers/scsi/scsi_lib.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 59b398530295..604f4d717933 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -266,13 +266,9 @@ static int scsi_merge_bio(struct request *rq, struct bio *bio)
266 return blk_rq_append_bio(q, rq, bio); 266 return blk_rq_append_bio(q, rq, bio);
267} 267}
268 268
269static int scsi_bi_endio(struct bio *bio, unsigned int bytes_done, int error) 269static void scsi_bi_endio(struct bio *bio, int error)
270{ 270{
271 if (bio->bi_size)
272 return 1;
273
274 bio_put(bio); 271 bio_put(bio);
275 return 0;
276} 272}
277 273
278/** 274/**
@@ -328,7 +324,7 @@ static int scsi_req_map_sg(struct request *rq, struct scatterlist *sgl,
328 if (bio->bi_vcnt >= nr_vecs) { 324 if (bio->bi_vcnt >= nr_vecs) {
329 err = scsi_merge_bio(rq, bio); 325 err = scsi_merge_bio(rq, bio);
330 if (err) { 326 if (err) {
331 bio_endio(bio, bio->bi_size, 0); 327 bio_endio(bio, 0);
332 goto free_bios; 328 goto free_bios;
333 } 329 }
334 bio = NULL; 330 bio = NULL;
@@ -350,7 +346,7 @@ free_bios:
350 /* 346 /*
351 * call endio instead of bio_put incase it was bounced 347 * call endio instead of bio_put incase it was bounced
352 */ 348 */
353 bio_endio(bio, bio->bi_size, 0); 349 bio_endio(bio, 0);
354 } 350 }
355 351
356 return err; 352 return err;