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>
This commit is contained in:
parent
fd45af53e2
commit
0cd97a0372
|
@ -585,24 +585,16 @@ static void zram_page_end_io(struct bio *bio)
|
||||||
bio_put(bio);
|
bio_put(bio);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
static void read_from_bdev_async(struct zram *zram, struct page *page,
|
||||||
* Returns 1 if the submission is successful.
|
|
||||||
*/
|
|
||||||
static int read_from_bdev_async(struct zram *zram, struct page *page,
|
|
||||||
unsigned long entry, struct bio *parent)
|
unsigned long entry, struct bio *parent)
|
||||||
{
|
{
|
||||||
struct bio *bio;
|
struct bio *bio;
|
||||||
|
|
||||||
bio = bio_alloc(zram->bdev, 1, parent ? parent->bi_opf : REQ_OP_READ,
|
bio = bio_alloc(zram->bdev, 1, parent ? parent->bi_opf : REQ_OP_READ,
|
||||||
GFP_NOIO);
|
GFP_NOIO);
|
||||||
if (!bio)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
bio->bi_iter.bi_sector = entry * (PAGE_SIZE >> 9);
|
bio->bi_iter.bi_sector = entry * (PAGE_SIZE >> 9);
|
||||||
if (!bio_add_page(bio, page, PAGE_SIZE, 0)) {
|
__bio_add_page(bio, page, PAGE_SIZE, 0);
|
||||||
bio_put(bio);
|
|
||||||
return -EIO;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!parent)
|
if (!parent)
|
||||||
bio->bi_end_io = zram_page_end_io;
|
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);
|
bio_chain(bio, parent);
|
||||||
|
|
||||||
submit_bio(bio);
|
submit_bio(bio);
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PAGE_WB_SIG "page_index="
|
#define PAGE_WB_SIG "page_index="
|
||||||
|
@ -840,7 +831,8 @@ static int read_from_bdev(struct zram *zram, struct page *page,
|
||||||
return -EIO;
|
return -EIO;
|
||||||
return read_from_bdev_sync(zram, page, entry, parent);
|
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
|
#else
|
||||||
static inline void reset_bdev(struct zram *zram) {};
|
static inline void reset_bdev(struct zram *zram) {};
|
||||||
|
|
Loading…
Reference in New Issue