On Wed 29-03-17 12:41:26, Michal Hocko wrote: [...] > > ceph_con_workfn > > mutex_lock(&con->mutex) # ceph_connection::mutex > > try_write > > ceph_tcp_connect > > sock_create_kern > > GFP_KERNEL allocation > > allocator recurses into XFS, more I/O is issued One more note. So what happens if this is a GFP_NOIO request which cannot make any progress? Your IO thread is blocked on con->mutex as you write below but the above thread cannot proceed as well. So I am _really_ not sure this acutally helps. [...] > > > > rbd_queue_workfn > > ceph_osdc_start_request > > mutex_lock(&osdc->request_mutex); > > ceph_con_send > > mutex_lock(&con->mutex) # deadlock -- Michal Hocko SUSE Labs