On Fri, Aug 11, 2023 at 1:05 PM Jan Kara <jack@xxxxxxx> wrote: > > Convert hibernation code to use bdev_open_by_dev(). > > CC: linux-pm@xxxxxxxxxxxxxxx > Signed-off-by: Jan Kara <jack@xxxxxxx> Acked-by: Rafael J. Wysocki <rafael@xxxxxxxxxx> > --- > kernel/power/swap.c | 31 ++++++++++++++++--------------- > 1 file changed, 16 insertions(+), 15 deletions(-) > > diff --git a/kernel/power/swap.c b/kernel/power/swap.c > index f6ebcd00c410..b475bee282ff 100644 > --- a/kernel/power/swap.c > +++ b/kernel/power/swap.c > @@ -222,7 +222,7 @@ int swsusp_swap_in_use(void) > */ > > static unsigned short root_swap = 0xffff; > -static struct block_device *hib_resume_bdev; > +static struct bdev_handle *hib_resume_bdev_handle; > > struct hib_bio_batch { > atomic_t count; > @@ -276,7 +276,8 @@ static int hib_submit_io(blk_opf_t opf, pgoff_t page_off, void *addr, > struct bio *bio; > int error = 0; > > - bio = bio_alloc(hib_resume_bdev, 1, opf, GFP_NOIO | __GFP_HIGH); > + bio = bio_alloc(hib_resume_bdev_handle->bdev, 1, opf, > + GFP_NOIO | __GFP_HIGH); > bio->bi_iter.bi_sector = page_off * (PAGE_SIZE >> 9); > > if (bio_add_page(bio, page, PAGE_SIZE, 0) < PAGE_SIZE) { > @@ -356,14 +357,14 @@ static int swsusp_swap_check(void) > return res; > root_swap = res; > > - hib_resume_bdev = blkdev_get_by_dev(swsusp_resume_device, > + hib_resume_bdev_handle = bdev_open_by_dev(swsusp_resume_device, > BLK_OPEN_WRITE, NULL, NULL); > - if (IS_ERR(hib_resume_bdev)) > - return PTR_ERR(hib_resume_bdev); > + if (IS_ERR(hib_resume_bdev_handle)) > + return PTR_ERR(hib_resume_bdev_handle); > > - res = set_blocksize(hib_resume_bdev, PAGE_SIZE); > + res = set_blocksize(hib_resume_bdev_handle->bdev, PAGE_SIZE); > if (res < 0) > - blkdev_put(hib_resume_bdev, NULL); > + bdev_release(hib_resume_bdev_handle); > > return res; > } > @@ -1521,10 +1522,10 @@ int swsusp_check(bool snapshot_test) > void *holder = snapshot_test ? &swsusp_holder : NULL; > int error; > > - hib_resume_bdev = blkdev_get_by_dev(swsusp_resume_device, BLK_OPEN_READ, > - holder, NULL); > - if (!IS_ERR(hib_resume_bdev)) { > - set_blocksize(hib_resume_bdev, PAGE_SIZE); > + hib_resume_bdev_handle = bdev_open_by_dev(swsusp_resume_device, > + BLK_OPEN_READ, holder, NULL); > + if (!IS_ERR(hib_resume_bdev_handle)) { > + set_blocksize(hib_resume_bdev_handle->bdev, PAGE_SIZE); > clear_page(swsusp_header); > error = hib_submit_io(REQ_OP_READ, swsusp_resume_block, > swsusp_header, NULL); > @@ -1549,11 +1550,11 @@ int swsusp_check(bool snapshot_test) > > put: > if (error) > - blkdev_put(hib_resume_bdev, holder); > + bdev_release(hib_resume_bdev_handle); > else > pr_debug("Image signature found, resuming\n"); > } else { > - error = PTR_ERR(hib_resume_bdev); > + error = PTR_ERR(hib_resume_bdev_handle); > } > > if (error) > @@ -1568,12 +1569,12 @@ int swsusp_check(bool snapshot_test) > > void swsusp_close(bool snapshot_test) > { > - if (IS_ERR(hib_resume_bdev)) { > + if (IS_ERR(hib_resume_bdev_handle)) { > pr_debug("Image device not initialised\n"); > return; > } > > - blkdev_put(hib_resume_bdev, snapshot_test ? &swsusp_holder : NULL); > + bdev_release(hib_resume_bdev_handle); > } > > /** > -- > 2.35.3 >