]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drbd: bio_alloc can't fail if it is allow to sleep
authorChristoph Hellwig <hch@lst.de>
Mon, 24 Jan 2022 09:10:57 +0000 (10:10 +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-10-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/drbd/drbd_receiver.c

index 6df2539e215baa9f8147754bbc1af482c0a62013..fb59b263deeef482e893ec712cd7a5aca36a9260 100644 (file)
@@ -1281,14 +1281,13 @@ static void submit_one_flush(struct drbd_device *device, struct issue_flush_cont
 {
        struct bio *bio = bio_alloc(GFP_NOIO, 0);
        struct one_flush_context *octx = kmalloc(sizeof(*octx), GFP_NOIO);
-       if (!bio || !octx) {
-               drbd_warn(device, "Could not allocate a bio, CANNOT ISSUE FLUSH\n");
+
+       if (!octx) {
+               drbd_warn(device, "Could not allocate a octx, CANNOT ISSUE FLUSH\n");
                /* FIXME: what else can I do now?  disconnecting or detaching
                 * really does not help to improve the state of the world, either.
                 */
-               kfree(octx);
-               if (bio)
-                       bio_put(bio);
+               bio_put(bio);
 
                ctx->error = -ENOMEM;
                put_ldev(device);
@@ -1646,7 +1645,6 @@ int drbd_submit_peer_request(struct drbd_device *device,
        unsigned data_size = peer_req->i.size;
        unsigned n_bios = 0;
        unsigned nr_pages = (data_size + PAGE_SIZE -1) >> PAGE_SHIFT;
-       int err = -ENOMEM;
 
        /* TRIM/DISCARD: for now, always use the helper function
         * blkdev_issue_zeroout(..., discard=true).
@@ -1688,10 +1686,6 @@ int drbd_submit_peer_request(struct drbd_device *device,
         */
 next_bio:
        bio = bio_alloc(GFP_NOIO, nr_pages);
-       if (!bio) {
-               drbd_err(device, "submit_ee: Allocation of a bio failed (nr_pages=%u)\n", nr_pages);
-               goto fail;
-       }
        /* > peer_req->i.sector, unless this is the first bio */
        bio->bi_iter.bi_sector = sector;
        bio_set_dev(bio, device->ldev->backing_bdev);
@@ -1726,14 +1720,6 @@ next_bio:
                drbd_submit_bio_noacct(device, fault_type, bio);
        } while (bios);
        return 0;
-
-fail:
-       while (bios) {
-               bio = bios;
-               bios = bios->bi_next;
-               bio_put(bio);
-       }
-       return err;
 }
 
 static void drbd_remove_epoch_entry_interval(struct drbd_device *device,