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

2018-02-27 Thread Zhou Wenjian

Hi Tachibana,

Thanks for your reply.

And I do appreciate Kumagai-san's help these years.


On 02/16/2018 10:45 AM, Masaki Tachibana wrote:

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-boun...@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



--
Thanks
Zhou


___
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec


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

2018-02-15 Thread Masaki Tachibana
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-boun...@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


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

2018-02-09 Thread Masahiko Hayashi
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 
>Cc: kexec@lists.infradead.org
>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 
>>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-boun...@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


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

2018-02-08 Thread Zhou Wenjian

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