Skip to content

Commit

Permalink
block: fix pin count management when merging same-page segments
Browse files Browse the repository at this point in the history
There is no need to unpin the added page when adding it to the bio fails
as that is done by the loop below.  Instead we want to unpin it when adding
a single page to the bio more than once as bio_release_pages will only
unpin it once.

Fixes: d1916c8 ("block: move same page handling from __bio_add_pc_page to the callers")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Link: https://lore.kernel.org/r/20230905124731.328255-1-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
  • Loading branch information
Christoph Hellwig authored and Jens Axboe committed Sep 6, 2023
1 parent 5a26e45 commit 5905afc
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions block/blk-map.c
Original file line number Diff line number Diff line change
Expand Up @@ -315,12 +315,11 @@ static int bio_map_user_iov(struct request *rq, struct iov_iter *iter,
n = bytes;

if (!bio_add_hw_page(rq->q, bio, page, n, offs,
max_sectors, &same_page)) {
if (same_page)
bio_release_page(bio, page);
max_sectors, &same_page))
break;
}

if (same_page)
bio_release_page(bio, page);
bytes -= n;
offs = 0;
}
Expand Down

0 comments on commit 5905afc

Please sign in to comment.