mm, madvise_inject_error: Let memory_failure() optionally take a page reference
authorDan Williams <dan.j.williams@intel.com>
Sat, 14 Jul 2018 04:50:06 +0000 (21:50 -0700)
committerDave Jiang <dave.jiang@intel.com>
Mon, 23 Jul 2018 17:38:05 +0000 (10:38 -0700)
commit23e7b5c2e2715947cf1ff57124dd3e96caf48521
tree1858e8c39a96a6d61d76deeab9b32b64b549d041
parent2fa147bdbf672c53386a8f5f2c7fe358004c3ef8
mm, madvise_inject_error: Let memory_failure() optionally take a page reference

The madvise_inject_error() routine uses get_user_pages() to lookup the
pfn and other information for injected error, but it does not release
that pin. The assumption is that failed pages should be taken out of
circulation.

However, for dax mappings it is not possible to take pages out of
circulation since they are 1:1 physically mapped as filesystem blocks,
or device-dax capacity. They also typically represent persistent memory
which has an error clearing capability.

In preparation for adding a special handler for dax mappings, shift the
responsibility of taking the page reference to memory_failure(). I.e.
drop the page reference and do not specify MF_COUNT_INCREASED to
memory_failure().

Cc: Michal Hocko <mhocko@suse.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Acked-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
mm/madvise.c