Lines Matching refs:workspace
26 struct workspace { struct
39 struct workspace *workspace = list_entry(ws, struct workspace, list); in zlib_get_workspace() argument
41 workspace->level = level; in zlib_get_workspace()
48 struct workspace *workspace = list_entry(ws, struct workspace, list); in zlib_free_workspace() local
50 kvfree(workspace->strm.workspace); in zlib_free_workspace()
51 kfree(workspace->buf); in zlib_free_workspace()
52 kfree(workspace); in zlib_free_workspace()
57 struct workspace *workspace; in zlib_alloc_workspace() local
60 workspace = kzalloc(sizeof(*workspace), GFP_KERNEL); in zlib_alloc_workspace()
61 if (!workspace) in zlib_alloc_workspace()
66 workspace->strm.workspace = kvmalloc(workspacesize, GFP_KERNEL); in zlib_alloc_workspace()
67 workspace->level = level; in zlib_alloc_workspace()
68 workspace->buf = NULL; in zlib_alloc_workspace()
74 workspace->buf = kmalloc(ZLIB_DFLTCC_BUF_SIZE, in zlib_alloc_workspace()
77 workspace->buf_size = ZLIB_DFLTCC_BUF_SIZE; in zlib_alloc_workspace()
79 if (!workspace->buf) { in zlib_alloc_workspace()
80 workspace->buf = kmalloc(PAGE_SIZE, GFP_KERNEL); in zlib_alloc_workspace()
81 workspace->buf_size = PAGE_SIZE; in zlib_alloc_workspace()
83 if (!workspace->strm.workspace || !workspace->buf) in zlib_alloc_workspace()
86 INIT_LIST_HEAD(&workspace->list); in zlib_alloc_workspace()
88 return &workspace->list; in zlib_alloc_workspace()
90 zlib_free_workspace(&workspace->list); in zlib_alloc_workspace()
98 struct workspace *workspace = list_entry(ws, struct workspace, list); in zlib_compress_pages() local
115 if (Z_OK != zlib_deflateInit(&workspace->strm, workspace->level)) { in zlib_compress_pages()
121 workspace->strm.total_in = 0; in zlib_compress_pages()
122 workspace->strm.total_out = 0; in zlib_compress_pages()
133 workspace->strm.next_in = workspace->buf; in zlib_compress_pages()
134 workspace->strm.avail_in = 0; in zlib_compress_pages()
135 workspace->strm.next_out = cpage_out; in zlib_compress_pages()
136 workspace->strm.avail_out = PAGE_SIZE; in zlib_compress_pages()
138 while (workspace->strm.total_in < len) { in zlib_compress_pages()
143 if (workspace->strm.avail_in == 0) { in zlib_compress_pages()
144 bytes_left = len - workspace->strm.total_in; in zlib_compress_pages()
146 workspace->buf_size / PAGE_SIZE); in zlib_compress_pages()
158 memcpy(workspace->buf + i * PAGE_SIZE, in zlib_compress_pages()
162 workspace->strm.next_in = workspace->buf; in zlib_compress_pages()
172 workspace->strm.next_in = data_in; in zlib_compress_pages()
174 workspace->strm.avail_in = min(bytes_left, in zlib_compress_pages()
175 (unsigned long) workspace->buf_size); in zlib_compress_pages()
178 ret = zlib_deflate(&workspace->strm, Z_SYNC_FLUSH); in zlib_compress_pages()
182 zlib_deflateEnd(&workspace->strm); in zlib_compress_pages()
188 if (workspace->strm.total_in > 8192 && in zlib_compress_pages()
189 workspace->strm.total_in < in zlib_compress_pages()
190 workspace->strm.total_out) { in zlib_compress_pages()
198 if (workspace->strm.avail_out == 0) { in zlib_compress_pages()
213 workspace->strm.avail_out = PAGE_SIZE; in zlib_compress_pages()
214 workspace->strm.next_out = cpage_out; in zlib_compress_pages()
217 if (workspace->strm.total_in >= len) in zlib_compress_pages()
219 if (workspace->strm.total_out > max_out) in zlib_compress_pages()
222 workspace->strm.avail_in = 0; in zlib_compress_pages()
228 ret = zlib_deflate(&workspace->strm, Z_FINISH); in zlib_compress_pages()
232 zlib_deflateEnd(&workspace->strm); in zlib_compress_pages()
235 } else if (workspace->strm.avail_out == 0) { in zlib_compress_pages()
251 workspace->strm.avail_out = PAGE_SIZE; in zlib_compress_pages()
252 workspace->strm.next_out = cpage_out; in zlib_compress_pages()
255 zlib_deflateEnd(&workspace->strm); in zlib_compress_pages()
257 if (workspace->strm.total_out >= workspace->strm.total_in) { in zlib_compress_pages()
263 *total_out = workspace->strm.total_out; in zlib_compress_pages()
264 *total_in = workspace->strm.total_in; in zlib_compress_pages()
279 struct workspace *workspace = list_entry(ws, struct workspace, list); in zlib_decompress_bio() local
293 workspace->strm.next_in = data_in; in zlib_decompress_bio()
294 workspace->strm.avail_in = min_t(size_t, srclen, PAGE_SIZE); in zlib_decompress_bio()
295 workspace->strm.total_in = 0; in zlib_decompress_bio()
297 workspace->strm.total_out = 0; in zlib_decompress_bio()
298 workspace->strm.next_out = workspace->buf; in zlib_decompress_bio()
299 workspace->strm.avail_out = workspace->buf_size; in zlib_decompress_bio()
308 workspace->strm.next_in += 2; in zlib_decompress_bio()
309 workspace->strm.avail_in -= 2; in zlib_decompress_bio()
312 if (Z_OK != zlib_inflateInit2(&workspace->strm, wbits)) { in zlib_decompress_bio()
317 while (workspace->strm.total_in < srclen) { in zlib_decompress_bio()
318 ret = zlib_inflate(&workspace->strm, Z_NO_FLUSH); in zlib_decompress_bio()
323 total_out = workspace->strm.total_out; in zlib_decompress_bio()
329 ret2 = btrfs_decompress_buf2page(workspace->buf, buf_start, in zlib_decompress_bio()
337 workspace->strm.next_out = workspace->buf; in zlib_decompress_bio()
338 workspace->strm.avail_out = workspace->buf_size; in zlib_decompress_bio()
340 if (workspace->strm.avail_in == 0) { in zlib_decompress_bio()
349 workspace->strm.next_in = data_in; in zlib_decompress_bio()
350 tmp = srclen - workspace->strm.total_in; in zlib_decompress_bio()
351 workspace->strm.avail_in = min(tmp, in zlib_decompress_bio()
360 zlib_inflateEnd(&workspace->strm); in zlib_decompress_bio()
372 struct workspace *workspace = list_entry(ws, struct workspace, list); in zlib_decompress() local
383 workspace->strm.next_in = data_in; in zlib_decompress()
384 workspace->strm.avail_in = srclen; in zlib_decompress()
385 workspace->strm.total_in = 0; in zlib_decompress()
387 workspace->strm.next_out = workspace->buf; in zlib_decompress()
388 workspace->strm.avail_out = workspace->buf_size; in zlib_decompress()
389 workspace->strm.total_out = 0; in zlib_decompress()
397 workspace->strm.next_in += 2; in zlib_decompress()
398 workspace->strm.avail_in -= 2; in zlib_decompress()
401 if (Z_OK != zlib_inflateInit2(&workspace->strm, wbits)) { in zlib_decompress()
411 ret = zlib_inflate(&workspace->strm, Z_NO_FLUSH); in zlib_decompress()
416 total_out = workspace->strm.total_out; in zlib_decompress()
436 memcpy(kaddr + pg_offset, workspace->buf + buf_offset, bytes); in zlib_decompress()
442 workspace->strm.next_out = workspace->buf; in zlib_decompress()
443 workspace->strm.avail_out = workspace->buf_size; in zlib_decompress()
451 zlib_inflateEnd(&workspace->strm); in zlib_decompress()