HomeFreeBSD

Do not ignore arc_adjust() return value.

Description

Do not ignore arc_adjust() return value.

This covers scenario when ARC may not shrink as fast as it could:

  1. arc_size < arc_c and arc_adjust() does not evict anything, returning zero to arc_reclaim_thread();
  2. arc_available_memory() reports memory pressure, which can not be satisfied by arc_kmem_reap_now();
  3. arc_shrink() reduces arc_c and calls arc_adjust(), return of which is ignored;
  4. even if the last arc_adjust() could not satisfy arc_size < arc_c, arc_reclaim_thread() will still go to sleep, since the first one returned zero.

Reviewed by: allanjude, markj, sef
MFC after: 2 weeks
Sponsored by: iXsystems, Inc.
Differential Revision: https://reviews.freebsd.org/D17927

Details

Provenance
mavAuthored on
Reviewer
allanjude
Differential Revision
D17927: Do not ignore arc_adjust() return value
Parents
rS340310: Fix first-packet completion
Branches
Unknown
Tags
Unknown