Hello, On my test system, blk_get_request() continuously hangs in schedule(). schedule+0x35/0x80 schedule_timeout+0x237/0x2d0 io_schedule_timeout+0xa6/0x110 get_request+0x258/0x760 blk_get_request+0x7f/0x100 I suspect the problem might be due to __get_request returning ENOMEM, leading to sleep in schedule(). static struct request *__get_request(struct request_list *rl, unsigned int op, struct bio *bio, gfp_t gfp_mask) { ... /* * The queue is full and the allocating * process is not a "batcher", and not * exempted by the IO scheduler */ return ERR_PTR(-ENOMEM); ... if (rl->count[is_sync] >= (3 * q->nr_requests / 2)) return ERR_PTR(-ENOMEM); ... } However, there is no significant memory pressure or IO load on my test system, I wonder why the __get_request might be failing leading to sleep. Any possible cause? Any suggestions are welcome! Thanks & Regards, Suraj