Lines Matching refs:workspace
29 struct workspace { struct
42 struct workspace *workspace = list_entry(ws, struct workspace, list); in zlib_get_workspace() local
44 workspace->level = level; in zlib_get_workspace()
51 struct workspace *workspace = list_entry(ws, struct workspace, list); in zlib_free_workspace() local
53 kvfree(workspace->strm.workspace); in zlib_free_workspace()
54 kfree(workspace->buf); in zlib_free_workspace()
55 kfree(workspace); in zlib_free_workspace()
60 struct workspace *workspace; in zlib_alloc_workspace() local
63 workspace = kzalloc(sizeof(*workspace), GFP_KERNEL); in zlib_alloc_workspace()
64 if (!workspace) in zlib_alloc_workspace()
69 workspace->strm.workspace = kvzalloc(workspacesize, GFP_KERNEL | __GFP_NOWARN); in zlib_alloc_workspace()
70 workspace->level = level; in zlib_alloc_workspace()
71 workspace->buf = NULL; in zlib_alloc_workspace()
77 workspace->buf = kmalloc(ZLIB_DFLTCC_BUF_SIZE, in zlib_alloc_workspace()
80 workspace->buf_size = ZLIB_DFLTCC_BUF_SIZE; in zlib_alloc_workspace()
82 if (!workspace->buf) { in zlib_alloc_workspace()
83 workspace->buf = kmalloc(PAGE_SIZE, GFP_KERNEL); in zlib_alloc_workspace()
84 workspace->buf_size = PAGE_SIZE; in zlib_alloc_workspace()
86 if (!workspace->strm.workspace || !workspace->buf) in zlib_alloc_workspace()
89 INIT_LIST_HEAD(&workspace->list); in zlib_alloc_workspace()
91 return &workspace->list; in zlib_alloc_workspace()
93 zlib_free_workspace(&workspace->list); in zlib_alloc_workspace()
105 struct workspace *workspace, u64 filepos, in copy_data_into_buffer() argument
129 memcpy(workspace->buf + cur - filepos, data_in, copy_length); in copy_data_into_buffer()
140 struct workspace *workspace = list_entry(ws, struct workspace, list); in zlib_compress_folios() local
156 ret = zlib_deflateInit(&workspace->strm, workspace->level); in zlib_compress_folios()
167 workspace->strm.total_in = 0; in zlib_compress_folios()
168 workspace->strm.total_out = 0; in zlib_compress_folios()
179 workspace->strm.next_in = workspace->buf; in zlib_compress_folios()
180 workspace->strm.avail_in = 0; in zlib_compress_folios()
181 workspace->strm.next_out = cfolio_out; in zlib_compress_folios()
182 workspace->strm.avail_out = PAGE_SIZE; in zlib_compress_folios()
184 while (workspace->strm.total_in < len) { in zlib_compress_folios()
189 if (workspace->strm.avail_in == 0) { in zlib_compress_folios()
190 unsigned long bytes_left = len - workspace->strm.total_in; in zlib_compress_folios()
191 unsigned int copy_length = min(bytes_left, workspace->buf_size); in zlib_compress_folios()
198 ret = copy_data_into_buffer(mapping, workspace, in zlib_compress_folios()
203 workspace->strm.next_in = workspace->buf; in zlib_compress_folios()
204 workspace->strm.avail_in = copy_length; in zlib_compress_folios()
221 workspace->strm.next_in = data_in; in zlib_compress_folios()
222 workspace->strm.avail_in = cur_len; in zlib_compress_folios()
226 ret = zlib_deflate(&workspace->strm, Z_SYNC_FLUSH); in zlib_compress_folios()
234 zlib_deflateEnd(&workspace->strm); in zlib_compress_folios()
240 if (workspace->strm.total_in > 8192 && in zlib_compress_folios()
241 workspace->strm.total_in < in zlib_compress_folios()
242 workspace->strm.total_out) { in zlib_compress_folios()
250 if (workspace->strm.avail_out == 0) { in zlib_compress_folios()
263 workspace->strm.avail_out = PAGE_SIZE; in zlib_compress_folios()
264 workspace->strm.next_out = cfolio_out; in zlib_compress_folios()
267 if (workspace->strm.total_in >= len) in zlib_compress_folios()
269 if (workspace->strm.total_out > max_out) in zlib_compress_folios()
272 workspace->strm.avail_in = 0; in zlib_compress_folios()
278 ret = zlib_deflate(&workspace->strm, Z_FINISH); in zlib_compress_folios()
282 zlib_deflateEnd(&workspace->strm); in zlib_compress_folios()
285 } else if (workspace->strm.avail_out == 0) { in zlib_compress_folios()
299 workspace->strm.avail_out = PAGE_SIZE; in zlib_compress_folios()
300 workspace->strm.next_out = cfolio_out; in zlib_compress_folios()
303 zlib_deflateEnd(&workspace->strm); in zlib_compress_folios()
305 if (workspace->strm.total_out >= workspace->strm.total_in) { in zlib_compress_folios()
311 *total_out = workspace->strm.total_out; in zlib_compress_folios()
312 *total_in = workspace->strm.total_in; in zlib_compress_folios()
325 struct workspace *workspace = list_entry(ws, struct workspace, list); in zlib_decompress_bio() local
337 workspace->strm.next_in = data_in; in zlib_decompress_bio()
338 workspace->strm.avail_in = min_t(size_t, srclen, PAGE_SIZE); in zlib_decompress_bio()
339 workspace->strm.total_in = 0; in zlib_decompress_bio()
341 workspace->strm.total_out = 0; in zlib_decompress_bio()
342 workspace->strm.next_out = workspace->buf; in zlib_decompress_bio()
343 workspace->strm.avail_out = workspace->buf_size; in zlib_decompress_bio()
352 workspace->strm.next_in += 2; in zlib_decompress_bio()
353 workspace->strm.avail_in -= 2; in zlib_decompress_bio()
356 ret = zlib_inflateInit2(&workspace->strm, wbits); in zlib_decompress_bio()
366 while (workspace->strm.total_in < srclen) { in zlib_decompress_bio()
367 ret = zlib_inflate(&workspace->strm, Z_NO_FLUSH); in zlib_decompress_bio()
372 total_out = workspace->strm.total_out; in zlib_decompress_bio()
378 ret2 = btrfs_decompress_buf2page(workspace->buf, in zlib_decompress_bio()
385 workspace->strm.next_out = workspace->buf; in zlib_decompress_bio()
386 workspace->strm.avail_out = workspace->buf_size; in zlib_decompress_bio()
388 if (workspace->strm.avail_in == 0) { in zlib_decompress_bio()
397 workspace->strm.next_in = data_in; in zlib_decompress_bio()
398 tmp = srclen - workspace->strm.total_in; in zlib_decompress_bio()
399 workspace->strm.avail_in = min(tmp, PAGE_SIZE); in zlib_decompress_bio()
412 zlib_inflateEnd(&workspace->strm); in zlib_decompress_bio()
422 struct workspace *workspace = list_entry(ws, struct workspace, list); in zlib_decompress() local
427 workspace->strm.next_in = data_in; in zlib_decompress()
428 workspace->strm.avail_in = srclen; in zlib_decompress()
429 workspace->strm.total_in = 0; in zlib_decompress()
431 workspace->strm.next_out = workspace->buf; in zlib_decompress()
432 workspace->strm.avail_out = workspace->buf_size; in zlib_decompress()
433 workspace->strm.total_out = 0; in zlib_decompress()
441 workspace->strm.next_in += 2; in zlib_decompress()
442 workspace->strm.avail_in -= 2; in zlib_decompress()
445 ret = zlib_inflateInit2(&workspace->strm, wbits); in zlib_decompress()
460 ret = zlib_inflate(&workspace->strm, Z_FINISH); in zlib_decompress()
461 to_copy = min(workspace->strm.total_out, destlen); in zlib_decompress()
465 memcpy_to_folio(dest_folio, dest_pgoff, workspace->buf, to_copy); in zlib_decompress()
480 zlib_inflateEnd(&workspace->strm); in zlib_decompress()