Hi Zhonghua,

>From you describe, the issue is reproducible.
I suggest you to trigger a core dump when you find the threads meet a dead 
lock, the crash dump is most convincing.
Then, you can use crash command to list the related threads/backtraces/lock 
variables in the patch description.
it is easy to let the people know where we meet this dead-lock when code 
review, 
and it is easy to let the users find your patch to fix this bug in the future.  


Thanks
Gang   


>>> 
> Hi Guozhonghua,
> 
> It seems that deadlock could be reproduced easily, right? Sharing the
> lock with VFS-layer probably is risky, and introducing a new lock for
> "quota_recovery" sounds good. Could you post a patch to fix this
> problem?
> 
> thanks,
> Jun
> 
> On 2018/1/13 11:04, Guozhonghua wrote:
>> 
>>> Message: 1
>>> Date: Fri, 12 Jan 2018 06:15:01 +0000
>>> From: Shichangkuo <shi.chang...@h3c.com>
>>> Subject: Re: [Ocfs2-devel] [Ocfs2-dev] BUG: deadlock with umount and
>>>     ocfs2 workqueue triggered by ocfs2rec thread
>>> To: Joseph Qi <jiangqi...@gmail.com>, "z...@suse.com" <z...@suse.com>,
>>>     "j...@suse.cz" <j...@suse.cz>
>>> Cc: "ocfs2-devel@oss.oracle.com" <ocfs2-devel@oss.oracle.com>
>>> Message-ID:
>>>     <d1e4d02760513d4b90dc3b40ff32af35e22ec...@h3cmlb14-ex.srv.huawe 
>>> i-3com.com>
>>>
>>> Content-Type: text/plain; charset="gb2312"
>>>
>>> Hi Joseph
>>>     Thanks for replying.
>>>     Umount will flush the ocfs2 workqueue in function
>>> ocfs2_truncate_log_shutdown and journal recovery is one work of ocfs2 wq.
>>>
>>> Thanks
>>> Changkuo
>>>
>> 
>> Umount 
>>   mngput
>>    cleanup_mnt 
>>       deactivate_super:   down_write the rw_semaphore:  
>> down_write(&s->s_umount)
>>          deactivate_locked_super
>>                kill_sb: kill_block_super
>>                      generic_shutdown_super
>>                              put_super : ocfs2_put_supe
>>                                      ocfs2_dismount_volume
>>                                              ocfs2_truncate_log_shutdown 
>>                                                      
>> flush_workqueue(osb->ocfs2_wq);
>>                                                              
>> ocfs2_finish_quota_recovery
>>                                                                      
>> down_read(&sb->s_umount); 
>>                                                                       Here 
>> retry down_read rw_semaphore; down read while holding write?  Try 
> rw_semaphore twice, dead lock ?
>>                                       The flush work queue of ocfs2_wq will 
>> be 
> blocked, so as the umount ops.  
>> 
>> Thanks. 
>> 
>> 
>> _______________________________________________
>> Ocfs2-devel mailing list
>> Ocfs2-devel@oss.oracle.com 
>> https://oss.oracle.com/mailman/listinfo/ocfs2-devel 
>> 
> 
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel@oss.oracle.com 
> https://oss.oracle.com/mailman/listinfo/ocfs2-devel


_______________________________________________
Ocfs2-devel mailing list
Ocfs2-devel@oss.oracle.com
https://oss.oracle.com/mailman/listinfo/ocfs2-devel

Reply via email to