Skip to content

Commit

Permalink
OpenZFS 7504 - kmem_reap hangs spa_sync and administrative tasks
Browse files Browse the repository at this point in the history
Authored by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Prakash Surya <prakash.surya@delphix.com>
Approved by: Dan McDonald <danmcd@omniti.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Tim Chase <tim@chase2k.com>
Ported-by: George Melikov <mail@gmelikov.ru>

OpenZFS-issue: https://www.illumos.org/issues/7504
OpenZFS-commit: openzfs/openzfs@405a5a0
Closes #5736
  • Loading branch information
gmelikov authored and behlendorf committed Feb 4, 2017
1 parent 2e0e443 commit 0a252da
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions module/zfs/arc.c
Original file line number Diff line number Diff line change
Expand Up @@ -4193,7 +4193,6 @@ arc_reclaim_thread(void)
mutex_enter(&arc_reclaim_lock);
while (!arc_reclaim_thread_exit) {
int64_t to_free;
int64_t free_memory = arc_available_memory();
uint64_t evicted = 0;

arc_tuning_update();
Expand All @@ -4215,6 +4214,14 @@ arc_reclaim_thread(void)
#endif
mutex_exit(&arc_reclaim_lock);

/*
* We call arc_adjust() before (possibly) calling
* arc_kmem_reap_now(), so that we can wake up
* arc_get_data_buf() sooner.
*/
evicted = arc_adjust();

int64_t free_memory = arc_available_memory();
if (free_memory < 0) {

arc_no_grow = B_TRUE;
Expand Down Expand Up @@ -4247,8 +4254,6 @@ arc_reclaim_thread(void)
arc_no_grow = B_FALSE;
}

evicted = arc_adjust();

mutex_enter(&arc_reclaim_lock);

/*
Expand Down

0 comments on commit 0a252da

Please sign in to comment.