Use MUTEX_FSTRANS on l2arc_buflist_mtx
Use MUTEX_FSTRANS on l2arc_buflist_mtx to prevent the following deadlock scenario: 1. arc_release() -> hash_lock -> l2arc_buflist_mtx 2. l2arc_write_buffers() -> l2arc_buflist_mtx -> (direct reclaim) -> arc_buf_remove_ref() -> hash_lock Signed-off-by: Chunwei Chen <tuxoko@gmail.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Signed-off-by: Tim Chase <tim@chase2k.com> Issue #3160
This commit is contained in:
parent
a1d3450e94
commit
40749aa7a6
@ -5530,7 +5530,7 @@ l2arc_init(void)
|
||||
mutex_init(&l2arc_feed_thr_lock, NULL, MUTEX_DEFAULT, NULL);
|
||||
cv_init(&l2arc_feed_thr_cv, NULL, CV_DEFAULT, NULL);
|
||||
mutex_init(&l2arc_dev_mtx, NULL, MUTEX_DEFAULT, NULL);
|
||||
mutex_init(&l2arc_buflist_mtx, NULL, MUTEX_DEFAULT, NULL);
|
||||
mutex_init(&l2arc_buflist_mtx, NULL, MUTEX_FSTRANS, NULL);
|
||||
mutex_init(&l2arc_free_on_write_mtx, NULL, MUTEX_DEFAULT, NULL);
|
||||
|
||||
l2arc_dev_list = &L2ARC_dev_list;
|
||||
|
Loading…
Reference in New Issue
Block a user