Lines Matching refs:ctx
65 static int z_erofs_lz4_prepare_dstpages(struct z_erofs_lz4_decompress_ctx *ctx,
68 struct z_erofs_decompress_req *rq = ctx->rq;
78 for (i = j = 0; i < ctx->outpages; ++i, ++j) {
124 static void *z_erofs_lz4_handle_overlap(struct z_erofs_lz4_decompress_ctx *ctx,
128 struct z_erofs_decompress_req *rq = ctx->rq;
134 omargin = PAGE_ALIGN(ctx->oend) - ctx->oend;
139 for (i = 0; i < ctx->inpages; ++i)
140 if (rq->out[ctx->outpages - ctx->inpages + i] !=
145 return out + ((ctx->outpages - ctx->inpages) << PAGE_SHIFT);
148 if (ctx->inpages <= 1) {
153 src = erofs_vm_map_ram(rq->in, ctx->inpages);
162 src = erofs_get_pcpubuf(ctx->inpages);
207 static int z_erofs_lz4_decompress_mem(struct z_erofs_lz4_decompress_ctx *ctx,
210 struct z_erofs_decompress_req *rq = ctx->rq;
234 src = z_erofs_lz4_handle_overlap(ctx, headpage, dst, &inputmargin,
267 vm_unmap_ram(src, ctx->inpages);
280 struct z_erofs_lz4_decompress_ctx ctx;
285 ctx.rq = rq;
286 ctx.oend = rq->pageofs_out + rq->outputsize;
287 ctx.outpages = PAGE_ALIGN(ctx.oend) >> PAGE_SHIFT;
288 ctx.inpages = PAGE_ALIGN(rq->inputsize) >> PAGE_SHIFT;
291 if (ctx.inpages == 1 && ctx.outpages == 1 && !rq->inplace_io) {
299 ret = z_erofs_lz4_prepare_dstpages(&ctx, pagepool);
306 dst = erofs_vm_map_ram(rq->out, ctx.outpages);
313 ret = z_erofs_lz4_decompress_mem(&ctx, dst);
317 vm_unmap_ram(dst, ctx.outpages);