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