drbd: set ->bi_bdev in drbd_req_new
authorChristoph Hellwig <hch@lst.de>
Wed, 2 Feb 2022 16:00:57 +0000 (17:00 +0100)
committerJens Axboe <axboe@kernel.dk>
Fri, 4 Feb 2022 14:43:17 +0000 (07:43 -0700)
Make sure the newly allocated bio has the correct bi_bdev set from the
start.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Mike Snitzer <snitzer@redhat.com>
Link: https://lore.kernel.org/r/20220202160109.108149-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/drbd/drbd_req.c

index 3235532..8d44e96 100644 (file)
@@ -31,6 +31,7 @@ static struct drbd_request *drbd_req_new(struct drbd_device *device, struct bio
        memset(req, 0, sizeof(*req));
 
        req->private_bio = bio_clone_fast(bio_src, GFP_NOIO, &drbd_io_bio_set);
+       bio_set_dev(req->private_bio, device->ldev->backing_bdev);
        req->private_bio->bi_private = req;
        req->private_bio->bi_end_io = drbd_request_endio;
 
@@ -1151,8 +1152,6 @@ drbd_submit_req_private_bio(struct drbd_request *req)
        else
                type = DRBD_FAULT_DT_RD;
 
-       bio_set_dev(bio, device->ldev->backing_bdev);
-
        /* State may have changed since we grabbed our reference on the
         * ->ldev member. Double check, and short-circuit to endio.
         * In case the last activity log transaction failed to get on