RE: [PATCH] makedumpfile: Fix a bug when multi-threads feature meets enospace

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Atsushi Kumagai has retired, so other members will maintain makedumpfile.


Wenjian

Sorry for the late reply.
Your patch looks good to me.
I'll merge it into V1.6.4.

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



[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux