diff options
author | Chunwei Chen <[email protected]> | 2015-03-16 23:54:57 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2015-03-18 09:29:38 -0700 |
commit | 40749aa7a6318e5588d4be1c40165e8d0ef6c44f (patch) | |
tree | 5aa18aa2cbfbf20ac5f3d718390169da0354d7eb /module/zfs | |
parent | a1d3450e947c4399cfa9cd3b0840de55d63b3023 (diff) |
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 <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Signed-off-by: Signed-off-by: Tim Chase <[email protected]>
Issue #3160
Diffstat (limited to 'module/zfs')
-rw-r--r-- | module/zfs/arc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/module/zfs/arc.c b/module/zfs/arc.c index 9a81b4c59..6c625c108 100644 --- a/module/zfs/arc.c +++ b/module/zfs/arc.c @@ -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; |