summaryrefslogtreecommitdiff
path: root/drivers/block
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2023-04-11 19:14:57 +0200
committerAndrew Morton <akpm@linux-foundation.org>2023-04-18 16:29:59 -0700
commit0cd97a0372f21a66d1591114d0a12391e8d977d7 (patch)
tree4b098fd4a51822169eeb5bc06f48c4f2a51442d2 /drivers/block
parentfd45af53e220b2fe13a5e8db88c5e92bc3296754 (diff)
zram: don't return errors from read_from_bdev_async
bio_alloc will never return a NULL bio when it is allowed to sleep, and adding a single page to bio with a single vector also can't fail, so switch to the asserting __bio_add_page variant and drop the error returns. Link: https://lkml.kernel.org/r/20230411171459.567614-16-hch@lst.de Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org> Acked-by: Minchan Kim <minchan@kernel.org> Cc: Jens Axboe <axboe@kernel.dk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/zram/zram_drv.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 9a35bb0f1a03..24b31957d9e8 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -585,24 +585,16 @@ static void zram_page_end_io(struct bio *bio)
bio_put(bio);
}
-/*
- * Returns 1 if the submission is successful.
- */
-static int read_from_bdev_async(struct zram *zram, struct page *page,
+static void read_from_bdev_async(struct zram *zram, struct page *page,
unsigned long entry, struct bio *parent)
{
struct bio *bio;
bio = bio_alloc(zram->bdev, 1, parent ? parent->bi_opf : REQ_OP_READ,
GFP_NOIO);
- if (!bio)
- return -ENOMEM;
bio->bi_iter.bi_sector = entry * (PAGE_SIZE >> 9);
- if (!bio_add_page(bio, page, PAGE_SIZE, 0)) {
- bio_put(bio);
- return -EIO;
- }
+ __bio_add_page(bio, page, PAGE_SIZE, 0);
if (!parent)
bio->bi_end_io = zram_page_end_io;
@@ -610,7 +602,6 @@ static int read_from_bdev_async(struct zram *zram, struct page *page,
bio_chain(bio, parent);
submit_bio(bio);
- return 1;
}
#define PAGE_WB_SIG "page_index="
@@ -840,7 +831,8 @@ static int read_from_bdev(struct zram *zram, struct page *page,
return -EIO;
return read_from_bdev_sync(zram, page, entry, parent);
}
- return read_from_bdev_async(zram, page, entry, parent);
+ read_from_bdev_async(zram, page, entry, parent);
+ return 1;
}
#else
static inline void reset_bdev(struct zram *zram) {};