Lines Matching refs:workspace

26 struct workspace {  struct
39 struct workspace *workspace = list_entry(ws, struct workspace, list); in zlib_get_workspace() local
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 = kvzalloc(workspacesize, GFP_KERNEL | __GFP_NOWARN); 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 copy_page(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()
211 workspace->strm.avail_out = PAGE_SIZE; in zlib_compress_pages()
212 workspace->strm.next_out = cpage_out; in zlib_compress_pages()
215 if (workspace->strm.total_in >= len) in zlib_compress_pages()
217 if (workspace->strm.total_out > max_out) in zlib_compress_pages()
220 workspace->strm.avail_in = 0; in zlib_compress_pages()
226 ret = zlib_deflate(&workspace->strm, Z_FINISH); in zlib_compress_pages()
230 zlib_deflateEnd(&workspace->strm); in zlib_compress_pages()
233 } else if (workspace->strm.avail_out == 0) { in zlib_compress_pages()
247 workspace->strm.avail_out = PAGE_SIZE; in zlib_compress_pages()
248 workspace->strm.next_out = cpage_out; in zlib_compress_pages()
251 zlib_deflateEnd(&workspace->strm); in zlib_compress_pages()
253 if (workspace->strm.total_out >= workspace->strm.total_in) { in zlib_compress_pages()
259 *total_out = workspace->strm.total_out; in zlib_compress_pages()
260 *total_in = workspace->strm.total_in; in zlib_compress_pages()
273 struct workspace *workspace = list_entry(ws, struct workspace, list); in zlib_decompress_bio() local
285 workspace->strm.next_in = data_in; in zlib_decompress_bio()
286 workspace->strm.avail_in = min_t(size_t, srclen, PAGE_SIZE); in zlib_decompress_bio()
287 workspace->strm.total_in = 0; in zlib_decompress_bio()
289 workspace->strm.total_out = 0; in zlib_decompress_bio()
290 workspace->strm.next_out = workspace->buf; in zlib_decompress_bio()
291 workspace->strm.avail_out = workspace->buf_size; in zlib_decompress_bio()
300 workspace->strm.next_in += 2; in zlib_decompress_bio()
301 workspace->strm.avail_in -= 2; in zlib_decompress_bio()
304 if (Z_OK != zlib_inflateInit2(&workspace->strm, wbits)) { in zlib_decompress_bio()
309 while (workspace->strm.total_in < srclen) { in zlib_decompress_bio()
310 ret = zlib_inflate(&workspace->strm, Z_NO_FLUSH); in zlib_decompress_bio()
315 total_out = workspace->strm.total_out; in zlib_decompress_bio()
321 ret2 = btrfs_decompress_buf2page(workspace->buf, in zlib_decompress_bio()
328 workspace->strm.next_out = workspace->buf; in zlib_decompress_bio()
329 workspace->strm.avail_out = workspace->buf_size; in zlib_decompress_bio()
331 if (workspace->strm.avail_in == 0) { in zlib_decompress_bio()
340 workspace->strm.next_in = data_in; in zlib_decompress_bio()
341 tmp = srclen - workspace->strm.total_in; in zlib_decompress_bio()
342 workspace->strm.avail_in = min(tmp, PAGE_SIZE); in zlib_decompress_bio()
350 zlib_inflateEnd(&workspace->strm); in zlib_decompress_bio()
360 struct workspace *workspace = list_entry(ws, struct workspace, list); in zlib_decompress() local
370 workspace->strm.next_in = data_in; in zlib_decompress()
371 workspace->strm.avail_in = srclen; in zlib_decompress()
372 workspace->strm.total_in = 0; in zlib_decompress()
374 workspace->strm.next_out = workspace->buf; in zlib_decompress()
375 workspace->strm.avail_out = workspace->buf_size; in zlib_decompress()
376 workspace->strm.total_out = 0; in zlib_decompress()
384 workspace->strm.next_in += 2; in zlib_decompress()
385 workspace->strm.avail_in -= 2; in zlib_decompress()
388 if (Z_OK != zlib_inflateInit2(&workspace->strm, wbits)) { in zlib_decompress()
398 ret = zlib_inflate(&workspace->strm, Z_NO_FLUSH); in zlib_decompress()
403 total_out = workspace->strm.total_out; in zlib_decompress()
423 workspace->buf + buf_offset, bytes); in zlib_decompress()
428 workspace->strm.next_out = workspace->buf; in zlib_decompress()
429 workspace->strm.avail_out = workspace->buf_size; in zlib_decompress()
437 zlib_inflateEnd(&workspace->strm); in zlib_decompress()