From 61983c946c54a816693237bcc5f5d7be8c6249f4 Mon Sep 17 00:00:00 2001 From: Adam Rutkowski Date: Thu, 19 Mar 2020 19:10:09 -0400 Subject: [PATCH] Move flush containers sort & submit outside metadata lock Moving _ocf_mngt_flush_containers outside global metadata critical section. All this function does is sort core lines and add queue request. This fixes stalls reported by Linux scheduler due to IO threads waiting on global metadata RW semaprhore for several minutes. Signed-off-by: Adam Rutkowski --- src/mngt/ocf_mngt_flush.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mngt/ocf_mngt_flush.c b/src/mngt/ocf_mngt_flush.c index 3bfdee4..66a6fd9 100644 --- a/src/mngt/ocf_mngt_flush.c +++ b/src/mngt/ocf_mngt_flush.c @@ -517,9 +517,9 @@ static void _ocf_mngt_flush_core( fc->core_id = core_id; fc->iter = 0; - _ocf_mngt_flush_containers(context, fc, 1, complete); - ocf_metadata_end_exclusive_access(&cache->metadata.lock); + + _ocf_mngt_flush_containers(context, fc, 1, complete); } static void _ocf_mngt_flush_all_cores( @@ -550,9 +550,9 @@ static void _ocf_mngt_flush_all_cores( return; } - _ocf_mngt_flush_containers(context, fctbl, fcnum, complete); - ocf_metadata_end_exclusive_access(&cache->metadata.lock); + + _ocf_mngt_flush_containers(context, fctbl, fcnum, complete); } static void _ocf_mngt_flush_all_cores_complete(