]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - block/blk-core.c
bdi: Fix another oops in wb_workfn()
[linux.git] / block / blk-core.c
index 3f56be15f17e9409f524883b87ec34f93e184ad6..afd2596ea3d3601960ef665b48a8a75e100f3741 100644 (file)
@@ -273,10 +273,6 @@ static void req_bio_endio(struct request *rq, struct bio *bio,
        bio_advance(bio, nbytes);
 
        /* don't actually finish bio if it's part of flush sequence */
-       /*
-        * XXX this code looks suspicious - it's not consistent with advancing
-        * req->bio in caller
-        */
        if (bio->bi_iter.bi_size == 0 && !(rq->rq_flags & RQF_FLUSH_SEQ))
                bio_endio(bio);
 }
@@ -2220,10 +2216,10 @@ static inline int blk_partition_remap(struct bio *bio)
                if (bio_check_eod(bio, part_nr_sects_read(p)))
                        goto out;
                bio->bi_iter.bi_sector += p->start_sect;
-               bio->bi_partno = 0;
                trace_block_bio_remap(bio->bi_disk->queue, bio, part_devt(p),
                                      bio->bi_iter.bi_sector - p->start_sect);
        }
+       bio->bi_partno = 0;
        ret = 0;
 out:
        rcu_read_unlock();
@@ -3081,10 +3077,8 @@ bool blk_update_request(struct request *req, blk_status_t error,
                struct bio *bio = req->bio;
                unsigned bio_bytes = min(bio->bi_iter.bi_size, nr_bytes);
 
-               if (bio_bytes == bio->bi_iter.bi_size) {
+               if (bio_bytes == bio->bi_iter.bi_size)
                        req->bio = bio->bi_next;
-                       bio->bi_next = NULL;
-               }
 
                /* Completion has already been traced */
                bio_clear_flag(bio, BIO_TRACE_COMPLETION);