mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-10 15:10:38 +00:00
brd: return 0/-error from brd_insert_page()
It currently returns a page, but callers just check for NULL/page to gauge success. Clean this up and return the appropriate error directly instead. Cc: stable@vger.kernel.org # 5.10+ Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
3ce6a11598
commit
db0ccc44a2
@ -78,11 +78,9 @@ static struct page *brd_lookup_page(struct brd_device *brd, sector_t sector)
|
||||
}
|
||||
|
||||
/*
|
||||
* Look up and return a brd's page for a given sector.
|
||||
* If one does not exist, allocate an empty page, and insert that. Then
|
||||
* return it.
|
||||
* Insert a new page for a given sector, if one does not already exist.
|
||||
*/
|
||||
static struct page *brd_insert_page(struct brd_device *brd, sector_t sector)
|
||||
static int brd_insert_page(struct brd_device *brd, sector_t sector)
|
||||
{
|
||||
pgoff_t idx;
|
||||
struct page *page;
|
||||
@ -90,7 +88,7 @@ static struct page *brd_insert_page(struct brd_device *brd, sector_t sector)
|
||||
|
||||
page = brd_lookup_page(brd, sector);
|
||||
if (page)
|
||||
return page;
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Must use NOIO because we don't want to recurse back into the
|
||||
@ -99,11 +97,11 @@ static struct page *brd_insert_page(struct brd_device *brd, sector_t sector)
|
||||
gfp_flags = GFP_NOIO | __GFP_ZERO | __GFP_HIGHMEM;
|
||||
page = alloc_page(gfp_flags);
|
||||
if (!page)
|
||||
return NULL;
|
||||
return -ENOMEM;
|
||||
|
||||
if (radix_tree_preload(GFP_NOIO)) {
|
||||
__free_page(page);
|
||||
return NULL;
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
spin_lock(&brd->brd_lock);
|
||||
@ -120,8 +118,7 @@ static struct page *brd_insert_page(struct brd_device *brd, sector_t sector)
|
||||
spin_unlock(&brd->brd_lock);
|
||||
|
||||
radix_tree_preload_end();
|
||||
|
||||
return page;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -174,16 +171,17 @@ static int copy_to_brd_setup(struct brd_device *brd, sector_t sector, size_t n)
|
||||
{
|
||||
unsigned int offset = (sector & (PAGE_SECTORS-1)) << SECTOR_SHIFT;
|
||||
size_t copy;
|
||||
int ret;
|
||||
|
||||
copy = min_t(size_t, n, PAGE_SIZE - offset);
|
||||
if (!brd_insert_page(brd, sector))
|
||||
return -ENOSPC;
|
||||
ret = brd_insert_page(brd, sector);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (copy < n) {
|
||||
sector += copy >> SECTOR_SHIFT;
|
||||
if (!brd_insert_page(brd, sector))
|
||||
return -ENOSPC;
|
||||
ret = brd_insert_page(brd, sector);
|
||||
}
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user