diff options
| author | shodanshok <g.danti@assyoma.it> | 2022-11-11 18:41:36 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-11 18:41:36 +0000 |
| commit | b445b25b273d263f032fadd717e5731185b74bf5 (patch) | |
| tree | f7236fbde27ed097093d98706b4d52b7b957d166 | |
| parent | 9f4ede63d23be4f43ba8dd0ca42c6a773a8eaa8d (diff) | |
| -rw-r--r-- | module/zfs/arc.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/module/zfs/arc.c b/module/zfs/arc.c index 1f97631f974f..f51f427c1bfd 100644 --- a/module/zfs/arc.c +++ b/module/zfs/arc.c @@ -5173,7 +5173,7 @@ arc_adapt(int bytes, arc_state_t *state) atomic_add_64(&arc_c, (int64_t)bytes); if (arc_c > arc_c_max) arc_c = arc_c_max; - else if (state == arc_anon) + else if (state == arc_anon && arc_p < arc_c >> 1) atomic_add_64(&arc_p, (int64_t)bytes); if (arc_p > arc_c) arc_p = arc_c; @@ -5386,7 +5386,8 @@ arc_get_data_impl(arc_buf_hdr_t *hdr, uint64_t size, const void *tag, if (aggsum_upper_bound(&arc_sums.arcstat_size) < arc_c && hdr->b_l1hdr.b_state == arc_anon && (zfs_refcount_count(&arc_anon->arcs_size) + - zfs_refcount_count(&arc_mru->arcs_size) > arc_p)) + zfs_refcount_count(&arc_mru->arcs_size) > arc_p && + arc_p < arc_c >> 1)) arc_p = MIN(arc_c, arc_p + size); } } |
