All of lore.kernel.org
 help / color / mirror / Atom feed
* [Ocfs2-devel] A deadlock when system do not has sufficient memory
@ 2014-08-20  3:57 Xue jiufei
  2014-08-22  8:30 ` Xue jiufei
  0 siblings, 1 reply; 16+ messages in thread
From: Xue jiufei @ 2014-08-20  3:57 UTC (permalink / raw)
  To: ocfs2-devel

Hi all,
We found there may exist a deadlock when system has not sufficient
memory. Here's the situation:
            N1                                      N2
                                             send message to N1
      o2net_wq(kworker)
receiving message and call corresponding
handler to handle this message. It may 
need to alloc some memory(use GFP_NOFS or GFP_KERNEL).
but there's no sufficient memory, lower then
min watermark. So it wakeup kswapd to reclaim memory
and itself may also call
__alloc_pages_direct_reclaim(), trying to
free some pages.

It tries to free ocfs2 inode
cache and calls ocfs2_drop_lock()->dlmunlock()
to drop inode lock, sending unlock message to master,
say N2. When reply comes, queue sc_rx_work and
wait o2net_wq to handle this work. however
o2net_wq is still handling last message, so can not 
process the reply message. It will wait
o2net_nsw_completed() in o2net_send_message_vec()
forever. 
Kswapd thread enconter the same situation.


So is there any advice to solve this deadlock?
And what is the probability that kmalloc return ENOMEM when use GFP_ATOMIC flag?

Thanks.

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2014-08-29  7:30 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-20  3:57 [Ocfs2-devel] A deadlock when system do not has sufficient memory Xue jiufei
2014-08-22  8:30 ` Xue jiufei
2014-08-22 17:08   ` Sunil Mushran
2014-08-25  2:05     ` Xue jiufei
2014-08-25  5:00       ` Sunil Mushran
2014-08-25  5:41         ` Joseph Qi
2014-08-25  5:45           ` Sunil Mushran
2014-08-25  6:05             ` Joseph Qi
2014-08-25 17:13               ` Sunil Mushran
2014-08-27  1:57                 ` Xue jiufei
2014-08-28  1:16                   ` Sunil Mushran
2014-08-25  1:50   ` Junxiao Bi
2014-08-28  8:16     ` Xue jiufei
2014-08-29  3:26       ` Junxiao Bi
2014-08-29  7:22         ` Xue jiufei
2014-08-29  7:30           ` Junxiao Bi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.