OSDN Git Service

xen-blkback: bio_alloc can't fail if it is allow to sleep
authorChristoph Hellwig <hch@lst.de>
Mon, 24 Jan 2022 09:11:00 +0000 (10:11 +0100)
committerJens Axboe <axboe@kernel.dk>
Wed, 2 Feb 2022 14:49:59 +0000 (07:49 -0700)
Remove handling of NULL returns from sleeping bio_alloc calls given that
those can't fail.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20220124091107.642561-13-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/xen-blkback/blkback.c

index 14e4528..6bb2ad7 100644 (file)
@@ -1327,9 +1327,6 @@ static int dispatch_rw_block_io(struct xen_blkif_ring *ring,
                                     seg[i].nsec << 9,
                                     seg[i].offset) == 0)) {
                        bio = bio_alloc(GFP_KERNEL, bio_max_segs(nseg - i));
-                       if (unlikely(bio == NULL))
-                               goto fail_put_bio;
-
                        biolist[nbio++] = bio;
                        bio_set_dev(bio, preq.bdev);
                        bio->bi_private = pending_req;
@@ -1346,9 +1343,6 @@ static int dispatch_rw_block_io(struct xen_blkif_ring *ring,
                BUG_ON(operation_flags != REQ_PREFLUSH);
 
                bio = bio_alloc(GFP_KERNEL, 0);
-               if (unlikely(bio == NULL))
-                       goto fail_put_bio;
-
                biolist[nbio++] = bio;
                bio_set_dev(bio, preq.bdev);
                bio->bi_private = pending_req;
@@ -1381,14 +1375,6 @@ static int dispatch_rw_block_io(struct xen_blkif_ring *ring,
        free_req(ring, pending_req);
        msleep(1); /* back off a bit */
        return -EIO;
-
- fail_put_bio:
-       for (i = 0; i < nbio; i++)
-               bio_put(biolist[i]);
-       atomic_set(&pending_req->pendcnt, 1);
-       __end_block_io_op(pending_req, BLK_STS_RESOURCE);
-       msleep(1); /* back off a bit */
-       return -EIO;
 }