From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from tyo162.gate.nec.co.jp ([114.179.232.162]) by bombadil.infradead.org with esmtps (Exim 4.89 #1 (Red Hat Linux)) id 1ek6mv-00063G-3u for kexec@lists.infradead.org; Fri, 09 Feb 2018 11:24:23 +0000 From: Masahiko Hayashi Subject: FW: [PATCH] makedumpfile: Fix a bug when multi-threads feature meets enospace Date: Fri, 9 Feb 2018 11:23:37 +0000 Message-ID: <7670A259544D1E42B1C54D20021FB1A669DF7D44@BPXM05GP.gisp.nec.co.jp> References: <1517230479-8440-1-git-send-email-zhouwj.fi@gmail.com> <3d76898d-66a2-c733-73e0-6aa8e9854179@gmail.com> <61D4E5D821F1674CB87C99F080A210BE0117AC32@BPXM01GP.gisp.nec.co.jp> In-Reply-To: <61D4E5D821F1674CB87C99F080A210BE0117AC32@BPXM01GP.gisp.nec.co.jp> Content-Language: ja-JP MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Zhou Wenjian Cc: "kexec@lists.infradead.org" >-----Original Message----- >From: Tachibana Masaki(橘 正樹) >Sent: Friday, February 09, 2018 8:05 PM >To: Zhou Wenjian >Cc: kexec@lists.infradead.org; Hayashi Masahiko(林 正彦) >Subject: RE: [PATCH] makedumpfile: Fix a bug when multi-threads feature meets enospace > >Hi Zhou, > >Sorry for the late reply. >Makedumpfile team are busy now for another development. >I'll reply in about a week. > >Thanks >tachibana > >> -----Original Message----- >> From: kexec [mailto:kexec-bounces@lists.infradead.org] On Behalf Of Zhou Wenjian >> Sent: Thursday, February 08, 2018 8:53 PM >> To: kexec@lists.infradead.org >> Cc: Kumagai Atsushi ; Suzuki Keiichirou >> Subject: Re: [PATCH] makedumpfile: Fix a bug when multi-threads feature meets enospace >> >> ping... >> >> >> On 01/29/2018 08:54 PM, Zhou Wenjian wrote: >> > Currently, when multi-threads feature meets enospace error, >> > the main thread will call pthread_join(). However, there is one >> > thread doing while{} and won't stop. >> > >> > pthread_mutex_lock(&info->page_data_mutex); >> > while (page_data_buf[index].used != FALSE) { >> > index = (index + 1) % info->num_buffers; >> > } >> > page_data_buf[index].used = TRUE; >> > pthread_mutex_unlock(&info->page_data_mutex); >> > >> > Then makedumpfile hangs. >> > >> > This patch add a cancel point in while{}. >> > >> > Signed-off-by: Zhou Wenjian >> > --- >> > makedumpfile.c | 4 +++- >> > 1 file changed, 3 insertions(+), 1 deletion(-) >> > >> > diff --git a/makedumpfile.c b/makedumpfile.c >> > index ed138d3..f7ad50c 100644 >> > --- a/makedumpfile.c >> > +++ b/makedumpfile.c >> > @@ -7731,11 +7731,13 @@ kdump_thread_function_cyclic(void *arg) { >> > buf_ready = FALSE; >> > >> > pthread_mutex_lock(&info->page_data_mutex); >> > + pthread_cleanup_push(pthread_mutex_unlock, &info->page_data_mutex); >> > while (page_data_buf[index].used != FALSE) { >> > + pthread_testcancel(); >> > index = (index + 1) % info->num_buffers; >> > } >> > page_data_buf[index].used = TRUE; >> > - pthread_mutex_unlock(&info->page_data_mutex); >> > + pthread_cleanup_pop(1); >> > >> > while (buf_ready == FALSE) { >> > pthread_testcancel(); >> >> -- >> Thanks >> Zhou >> >> >> _______________________________________________ >> kexec mailing list >> kexec@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/kexec _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec