Lines Matching full:level
34 static zstd_parameters zstd_get_btrfs_parameters(int level, in zstd_get_btrfs_parameters() argument
37 zstd_parameters params = zstd_get_params(level, src_len); in zstd_get_btrfs_parameters()
49 int level; member
62 * Zstd workspaces have different memory requirements depending on the level.
63 * The zstd workspaces are managed by having individual lists for each level
64 * and a global lru. Forward progress is maintained by protecting a max level
68 * have available workspaces and scans up. This lets us recycle higher level
71 * level. Putting a workspace involves adding it back to the appropriate places
95 static inline int clip_level(int level) in clip_level() argument
97 return max(0, level - 1); in clip_level()
127 int level; in zstd_reclaim_timer_fn() local
136 level = victim->level; in zstd_reclaim_timer_fn()
141 if (list_empty(&zwsm->idle_ws[level])) in zstd_reclaim_timer_fn()
142 clear_bit(level, &zwsm->active_map); in zstd_reclaim_timer_fn()
155 * It is possible based on the level configurations that a higher level
156 * workspace uses less memory than a lower level workspace. In order to reuse
158 * the required memory for each level and enforces the monotonicity between
159 * level and memory required.
164 int level; in zstd_calc_ws_mem_sizes() local
166 for (level = ZSTD_BTRFS_MIN_LEVEL; level <= ZSTD_BTRFS_MAX_LEVEL; level++) { in zstd_calc_ws_mem_sizes()
167 if (level == 0) in zstd_calc_ws_mem_sizes()
170 zstd_get_btrfs_parameters(level, ZSTD_BTRFS_MAX_INPUT); in zstd_calc_ws_mem_sizes()
177 /* Use level 1 workspace size for all the fast mode negative levels. */ in zstd_calc_ws_mem_sizes()
178 zstd_ws_mem_sizes[clip_level(level)] = max_size; in zstd_calc_ws_mem_sizes()
235 * Find workspace for given level.
237 * @level: compression level
240 * compression level. This lets us utilize already allocated workspaces before
246 static struct list_head *zstd_find_workspace(struct btrfs_fs_info *fs_info, int level) in zstd_find_workspace() argument
251 int i = clip_level(level); in zstd_find_workspace()
260 /* keep its place if it's a lower level using this */ in zstd_find_workspace()
261 workspace->req_level = level; in zstd_find_workspace()
262 if (clip_level(level) == workspace->level) in zstd_find_workspace()
276 * Zstd get_workspace for level.
278 * @level: compression level
280 * If @level is 0, then any compression level can be used. Therefore, we begin
283 * memory pressure, go to sleep waiting for the max level workspace to free up.
285 struct list_head *zstd_get_workspace(struct btrfs_fs_info *fs_info, int level) in zstd_get_workspace() argument
293 /* level == 0 means we can use any workspace */ in zstd_get_workspace()
294 if (!level) in zstd_get_workspace()
295 level = 1; in zstd_get_workspace()
298 ws = zstd_find_workspace(fs_info, level); in zstd_get_workspace()
303 ws = zstd_alloc_workspace(fs_info, level); in zstd_get_workspace()
315 ws = zstd_find_workspace(fs_info, level); in zstd_get_workspace()
334 * the requested compression level. Here is where we continue to protect the
335 * max level workspace or update last_used accordingly. If the reclaim timer
336 * isn't set, it is also set here. Only the max level workspace tries and wakes
347 /* A node is only taken off the lru if we are the corresponding level */ in zstd_put_workspace()
348 if (clip_level(workspace->req_level) == workspace->level) { in zstd_put_workspace()
349 /* Hide a max level workspace from reclaim */ in zstd_put_workspace()
361 set_bit(workspace->level, &zwsm->active_map); in zstd_put_workspace()
362 list_add(&workspace->list, &zwsm->idle_ws[workspace->level]); in zstd_put_workspace()
367 if (workspace->level == clip_level(ZSTD_BTRFS_MAX_LEVEL)) in zstd_put_workspace()
380 struct list_head *zstd_alloc_workspace(struct btrfs_fs_info *fs_info, int level) in zstd_alloc_workspace() argument
388 /* Use level 1 workspace size for all the fast mode negative levels. */ in zstd_alloc_workspace()
389 workspace->size = zstd_ws_mem_sizes[clip_level(level)]; in zstd_alloc_workspace()
390 workspace->level = clip_level(level); in zstd_alloc_workspace()
391 workspace->req_level = level; in zstd_alloc_workspace()
433 "zstd compression init level %d failed, root %llu inode %llu offset %llu", in zstd_compress_bio()
464 "zstd compression level %d failed, error %d root %llu inode %llu offset %llu", in zstd_compress_bio()
535 "zstd compression end level %d failed, error %d root %llu inode %llu offset %llu", in zstd_compress_bio()