Hi Zhou-san I will forward Tachibana's mail. Thank you >-----Original Message----- >From: Hayashi Masahiko(林 正彦) >Sent: Friday, February 09, 2018 8:24 PM >To: Zhou Wenjian <zhouwj.fi@xxxxxxxxx> >Cc: kexec@xxxxxxxxxxxxxxxxxxx >Subject: FW: [PATCH] makedumpfile: Fix a bug when multi-threads feature meets enospace > >>-----Original Message----- >>From: Tachibana Masaki(橘 正樹) >>Sent: Friday, February 09, 2018 8:05 PM >>To: Zhou Wenjian <zhouwj.fi@xxxxxxxxx> >>Cc: kexec@xxxxxxxxxxxxxxxxxxx; Hayashi Masahiko(林 正彦) <mas-hayashi@xxxxxxxxxxxxx> >>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@xxxxxxxxxxxxxxxxxxx] On Behalf Of Zhou Wenjian >>> Sent: Thursday, February 08, 2018 8:53 PM >>> To: kexec@xxxxxxxxxxxxxxxxxxx >>> Cc: Kumagai Atsushi <ats-kumagai@xxxxxxxxxxxxx>; Suzuki Keiichirou <kei-suzuki@xxxxxxxxxxxxx> >>> 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 <zhouwj.fi@xxxxxxxxx> >>> > --- >>> > 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@xxxxxxxxxxxxxxxxxxx >>> http://lists.infradead.org/mailman/listinfo/kexec _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec