linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH v2 0/6] solve deadlock caused by memory allocation with I/O
@ 2012-10-22  8:33 Ming Lei
  2012-10-22  8:33 ` [RFC PATCH v2 1/6] mm: teach mm by current context info to not do I/O during memory allocation Ming Lei
                   ` (5 more replies)
  0 siblings, 6 replies; 18+ messages in thread
From: Ming Lei @ 2012-10-22  8:33 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alan Stern, Oliver Neukum, Minchan Kim, Greg Kroah-Hartman,
	Rafael J. Wysocki, Jens Axboe, David S. Miller, Andrew Morton,
	netdev, linux-usb, linux-pm, linux-mm

Hi,

This patchset try to solve one deadlock problem which might be caused
by memory allocation with block I/O during runtime resume and block device
error handling path. Traditionly, the problem is addressed by passing
GFP_NOIO statically to mm, but that is not a effective solution, see
detailed description in patch 1's commit log.

This patch set introduces one process flag and trys to fix one deadlock
problem on block device/network device during runtime resume or usb bus reset.

The 1st one is the change on include/sched.h and mm.

The 2nd patch introduces the flag of memalloc_noio_resume on 'dev_pm_info',
and pm_runtime_set_memalloc_noio(), so that PM Core can teach mm to not
allocate mm with GFP_IOFS during the runtime_resume callback only on
device with the flag set.

The following 2 patches apply the introduced pm_runtime_set_memalloc_noio()
to mark all devices as memalloc_noio_resume in the path from the block or
network device to the root device in device tree.

The last 2 patches are applied again PM and USB subsystem to demonstrate
how to use the introduced mechanism to fix the deadlock problem.

V2:
	- remove changes on 'may_writepage' and 'may_swap'(1/6)
	- unset GFP_IOFS in try_to_free_pages() path(1/6)
	- introduce pm_runtime_set_memalloc_noio()
	- only apply the meachnism on block/network device and its ancestors
	for runtime resume context
V1:
        - take Minchan's change to avoid the check in alloc_page hot path
        - change the helpers' style into save/restore as suggested by Alan
        - memory allocation with no io in usb bus reset path for all devices
        as suggested by Greg and Oliver

 block/genhd.c                |    8 +++++
 drivers/base/power/runtime.c |   69 +++++++++++++++++++++++++++++++++++++++++-
 drivers/usb/core/hub.c       |   11 +++++++
 include/linux/pm.h           |    1 +
 include/linux/pm_runtime.h   |    3 ++
 include/linux/sched.h        |   10 ++++++
 mm/page_alloc.c              |   10 +++++-
 mm/vmscan.c                  |   12 ++++++++
 net/core/net-sysfs.c         |    5 +++
 9 files changed, 127 insertions(+), 2 deletions(-)


Thanks,
--
Ming Lei

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

end of thread, other threads:[~2012-10-24 12:21 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-22  8:33 [RFC PATCH v2 0/6] solve deadlock caused by memory allocation with I/O Ming Lei
2012-10-22  8:33 ` [RFC PATCH v2 1/6] mm: teach mm by current context info to not do I/O during memory allocation Ming Lei
2012-10-22  8:33 ` [RFC PATCH v2 2/6] PM / Runtime: introduce pm_runtime_set_memalloc_noio() Ming Lei
2012-10-22 14:33   ` Alan Stern
2012-10-23  9:08     ` Ming Lei
2012-10-23 14:46       ` Alan Stern
2012-10-23 15:18         ` Ming Lei
2012-10-23 18:16           ` Alan Stern
2012-10-24  9:06           ` David Laight
2012-10-24 12:26             ` Alan Cox
2012-10-22  8:33 ` [RFC PATCH v2 3/6] block/genhd.c: apply pm_runtime_set_memalloc_noio on block devices Ming Lei
2012-10-22  8:33 ` [RFC PATCH v2 4/6] net/core: apply pm_runtime_set_memalloc_noio on network devices Ming Lei
2012-10-22 19:18   ` Alan Stern
2012-10-23  8:42     ` Ming Lei
2012-10-22  8:33 ` [RFC PATCH v2 5/6] PM / Runtime: force memory allocation with no I/O during runtime_resume callbcack Ming Lei
2012-10-22  8:33 ` [RFC PATCH v2 6/6] USB: forbid memory allocation with I/O during bus reset Ming Lei
2012-10-22 14:37   ` Alan Stern
2012-10-23  8:44     ` Ming Lei

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).