Commit fbb5615f authored by Chaitanya Kulkarni's avatar Chaitanya Kulkarni Committed by Jens Axboe

null_blk: use non-deprecated lib functions

Use library helper memcpy_page() to copy source page into destination
instead of having duplicate code in copy_to_nullb() & copy_from_nullb().
In copy_from_nullb() also replace the memset call with zero_user().

Use library helper memset_page() to set the buffer to 0xFF instead of
having duplicate code.

This also removes deprecated API kmap_atomic() from copy_to_nullb()
copy_from_nullb() and nullb_fill_pattern(),
from :include/linux/highmem.h:
"kmap_atomic - Atomically map a page for temporary usage - Deprecated!"
Signed-off-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
Link: https://lore.kernel.org/r/20230330184926.64209-2-kch@nvidia.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 06965037
...@@ -1112,7 +1112,6 @@ static int copy_to_nullb(struct nullb *nullb, struct page *source, ...@@ -1112,7 +1112,6 @@ static int copy_to_nullb(struct nullb *nullb, struct page *source,
size_t temp, count = 0; size_t temp, count = 0;
unsigned int offset; unsigned int offset;
struct nullb_page *t_page; struct nullb_page *t_page;
void *dst, *src;
while (count < n) { while (count < n) {
temp = min_t(size_t, nullb->dev->blocksize, n - count); temp = min_t(size_t, nullb->dev->blocksize, n - count);
...@@ -1126,11 +1125,7 @@ static int copy_to_nullb(struct nullb *nullb, struct page *source, ...@@ -1126,11 +1125,7 @@ static int copy_to_nullb(struct nullb *nullb, struct page *source,
if (!t_page) if (!t_page)
return -ENOSPC; return -ENOSPC;
src = kmap_atomic(source); memcpy_page(t_page->page, offset, source, off + count, temp);
dst = kmap_atomic(t_page->page);
memcpy(dst + offset, src + off + count, temp);
kunmap_atomic(dst);
kunmap_atomic(src);
__set_bit(sector & SECTOR_MASK, t_page->bitmap); __set_bit(sector & SECTOR_MASK, t_page->bitmap);
...@@ -1149,7 +1144,6 @@ static int copy_from_nullb(struct nullb *nullb, struct page *dest, ...@@ -1149,7 +1144,6 @@ static int copy_from_nullb(struct nullb *nullb, struct page *dest,
size_t temp, count = 0; size_t temp, count = 0;
unsigned int offset; unsigned int offset;
struct nullb_page *t_page; struct nullb_page *t_page;
void *dst, *src;
while (count < n) { while (count < n) {
temp = min_t(size_t, nullb->dev->blocksize, n - count); temp = min_t(size_t, nullb->dev->blocksize, n - count);
...@@ -1158,16 +1152,11 @@ static int copy_from_nullb(struct nullb *nullb, struct page *dest, ...@@ -1158,16 +1152,11 @@ static int copy_from_nullb(struct nullb *nullb, struct page *dest,
t_page = null_lookup_page(nullb, sector, false, t_page = null_lookup_page(nullb, sector, false,
!null_cache_active(nullb)); !null_cache_active(nullb));
dst = kmap_atomic(dest); if (t_page)
if (!t_page) { memcpy_page(dest, off + count, t_page->page, offset,
memset(dst + off + count, 0, temp); temp);
goto next; else
} zero_user(dest, off + count, temp);
src = kmap_atomic(t_page->page);
memcpy(dst + off + count, src + offset, temp);
kunmap_atomic(src);
next:
kunmap_atomic(dst);
count += temp; count += temp;
sector += temp >> SECTOR_SHIFT; sector += temp >> SECTOR_SHIFT;
...@@ -1178,11 +1167,7 @@ static int copy_from_nullb(struct nullb *nullb, struct page *dest, ...@@ -1178,11 +1167,7 @@ static int copy_from_nullb(struct nullb *nullb, struct page *dest,
static void nullb_fill_pattern(struct nullb *nullb, struct page *page, static void nullb_fill_pattern(struct nullb *nullb, struct page *page,
unsigned int len, unsigned int off) unsigned int len, unsigned int off)
{ {
void *dst; memset_page(page, off, 0xff, len);
dst = kmap_atomic(page);
memset(dst + off, 0xFF, len);
kunmap_atomic(dst);
} }
blk_status_t null_handle_discard(struct nullb_device *dev, blk_status_t null_handle_discard(struct nullb_device *dev,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment