erofs: simplify z_erofs_transform_plain()
Use memcpy_to_page() instead of open-coding them. In addition, add a missing flush_dcache_page() even though almost all modern architectures clear `PG_dcache_clean` flag for new file cache pages so that it doesn't change anything in practice. Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> Reviewed-by: Yue Hu <huyue2@coolpad.com> Reviewed-by: Chao Yu <chao@kernel.org> Link: https://lore.kernel.org/r/20230627161240.331-2-hsiangkao@linux.alibaba.com Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
This commit is contained in:
parent
123ec246eb
commit
c5539762f3
|
@ -328,7 +328,7 @@ static int z_erofs_transform_plain(struct z_erofs_decompress_req *rq,
|
|||
const unsigned int lefthalf = rq->outputsize - righthalf;
|
||||
const unsigned int interlaced_offset =
|
||||
rq->alg == Z_EROFS_COMPRESSION_SHIFTED ? 0 : rq->pageofs_out;
|
||||
unsigned char *src, *dst;
|
||||
u8 *src;
|
||||
|
||||
if (outpages > 2 && rq->alg == Z_EROFS_COMPRESSION_SHIFTED) {
|
||||
DBG_BUGON(1);
|
||||
|
@ -341,22 +341,19 @@ static int z_erofs_transform_plain(struct z_erofs_decompress_req *rq,
|
|||
}
|
||||
|
||||
src = kmap_local_page(rq->in[inpages - 1]) + rq->pageofs_in;
|
||||
if (rq->out[0]) {
|
||||
dst = kmap_local_page(rq->out[0]);
|
||||
memcpy(dst + rq->pageofs_out, src + interlaced_offset,
|
||||
righthalf);
|
||||
kunmap_local(dst);
|
||||
}
|
||||
if (rq->out[0])
|
||||
memcpy_to_page(rq->out[0], rq->pageofs_out,
|
||||
src + interlaced_offset, righthalf);
|
||||
|
||||
if (outpages > inpages) {
|
||||
DBG_BUGON(!rq->out[outpages - 1]);
|
||||
if (rq->out[outpages - 1] != rq->in[inpages - 1]) {
|
||||
dst = kmap_local_page(rq->out[outpages - 1]);
|
||||
memcpy(dst, interlaced_offset ? src :
|
||||
(src + righthalf), lefthalf);
|
||||
kunmap_local(dst);
|
||||
memcpy_to_page(rq->out[outpages - 1], 0, src +
|
||||
(interlaced_offset ? 0 : righthalf),
|
||||
lefthalf);
|
||||
} else if (!interlaced_offset) {
|
||||
memmove(src, src + righthalf, lefthalf);
|
||||
flush_dcache_page(rq->in[inpages - 1]);
|
||||
}
|
||||
}
|
||||
kunmap_local(src);
|
||||
|
|
Loading…
Reference in New Issue