]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC 313879
authorjpaetzel <jpaetzel@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Tue, 7 Mar 2017 18:31:03 +0000 (18:31 +0000)
committerjpaetzel <jpaetzel@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Tue, 7 Mar 2017 18:31:03 +0000 (18:31 +0000)
commit1e291396bea20f0479bf13f205274ce21985d6ab
tree2a49bf3b91705623d6646f65960ab532f80e5c77
parentb34425ee2fdf4033e6265e9197803e7a38a3f1d6
MFC 313879

MVF: 313876

7504 kmem_reap hangs spa_sync and administrative tasks

illumos/illumos-gate@405a5a0f5c3ab36cb76559467d1a62ba648bd809
https://github.com/illumos/illumos-gate/commit/405a5a0f5c3ab36cb76559467d1a62ba648bd80

https://www.illumos.org/issues/7504

  We see long spa_sync(). We are waiting to hold dp_config_rwlock for writer. Some
  other thread holds dp_config_rwlock for reader, then calls arc_get_data_buf(),
  which finds that arc_is_overflowing()==B_TRUE. So it waits (while holding
  dp_config_rwlock for reader) for arc_reclaim_thread to signal arc_reclaim_waiters_cv.
  Before signaling, arc_reclaim_thread does arc_kmem_reap_now(), which takes ~seconds.

Author: 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>

git-svn-id: svn://svn.freebsd.org/base/stable/10@314874 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c