Commit 0cd97a03 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Andrew Morton
Browse files

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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarSergey Senozhatsky <senozhatsky@chromium.org>
Acked-by: default avatarMinchan Kim <minchan@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent fd45af53
Loading
Loading
Loading
Loading
+4 −12
Original line number Diff line number Diff line
@@ -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) {};