Skip to content

Commit

Permalink
Make arc_need_free updates atomic
Browse files Browse the repository at this point in the history
Ensures proper accounting of bytes we requested to free

AKAMAI: zfs: CR 3695072
Reviewed-by: Tim Chase <tim@chase2k.com>
Reviewed-by: Richard Yao <ryao@gentoo.org>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Debabrata Banerjee <dbanerje@akamai.com>
Issue #6035
  • Loading branch information
dbavatar authored and behlendorf committed May 2, 2017
1 parent 9b50146 commit 30fffb9
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions module/zfs/arc.c
Original file line number Diff line number Diff line change
Expand Up @@ -4220,7 +4220,7 @@ arc_reclaim_thread(void)
while (!arc_reclaim_thread_exit) {
int64_t to_free;
uint64_t evicted = 0;

uint64_t need_free = arc_need_free;
arc_tuning_update();

/*
Expand Down Expand Up @@ -4270,7 +4270,7 @@ arc_reclaim_thread(void)
to_free = (arc_c >> arc_shrink_shift) - free_memory;
if (to_free > 0) {
#ifdef _KERNEL
to_free = MAX(to_free, arc_need_free);
to_free = MAX(to_free, need_free);
#endif
arc_shrink(to_free);
}
Expand All @@ -4295,11 +4295,12 @@ arc_reclaim_thread(void)
/*
* We're either no longer overflowing, or we
* can't evict anything more, so we should wake
* up any threads before we go to sleep and clear
* arc_need_free since nothing more can be done.
* up any threads before we go to sleep and remove
* the bytes we were working on from arc_need_free
* since nothing more will be done here.
*/
cv_broadcast(&arc_reclaim_waiters_cv);
arc_need_free = 0;
ARCSTAT_INCR(arcstat_need_free, -need_free);

/*
* Block until signaled, or after one second (we
Expand Down Expand Up @@ -4452,7 +4453,7 @@ __arc_shrinker_func(struct shrinker *shrink, struct shrink_control *sc)
ARCSTAT_BUMP(arcstat_memory_indirect_count);
} else {
arc_no_grow = B_TRUE;
arc_need_free = ptob(sc->nr_to_scan);
ARCSTAT_INCR(arcstat_need_free, ptob(sc->nr_to_scan));
ARCSTAT_BUMP(arcstat_memory_direct_count);
}

Expand Down

0 comments on commit 30fffb9

Please sign in to comment.