diff options
| author | Andi Kleen <ak@linux.intel.com> | 2010-09-27 17:09:51 -0400 |
|---|---|---|
| committer | Andi Kleen <ak@linux.intel.com> | 2010-10-08 03:33:00 -0400 |
| commit | 1c80b990a3411733890eff10817e388d5e25e2dd (patch) | |
| tree | ce5db3902697e04c78ef3a486a6d16a331a89d6c /mm/memory-failure.c | |
| parent | 6b0cd00bc396daf5c2dcf17a8d82055335341f46 (diff) | |
HWPOISON: Improve comments in memory-failure.c
Clean up and improve the overview comment in memory-failure.c
Tidy some grammar issues in other comments.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Diffstat (limited to 'mm/memory-failure.c')
| -rw-r--r-- | mm/memory-failure.c | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 757f6b0accfe..eebb9d8efae4 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c | |||
| @@ -7,21 +7,26 @@ | |||
| 7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
| 8 | * | 8 | * |
| 9 | * High level machine check handler. Handles pages reported by the | 9 | * High level machine check handler. Handles pages reported by the |
| 10 | * hardware as being corrupted usually due to a 2bit ECC memory or cache | 10 | * hardware as being corrupted usually due to a multi-bit ECC memory or cache |
| 11 | * failure. | 11 | * failure. |
| 12 | * | ||
| 13 | * In addition there is a "soft offline" entry point that allows stop using | ||
| 14 | * not-yet-corrupted-by-suspicious pages without killing anything. | ||
| 12 | * | 15 | * |
| 13 | * Handles page cache pages in various states. The tricky part | 16 | * Handles page cache pages in various states. The tricky part |
| 14 | * here is that we can access any page asynchronous to other VM | 17 | * here is that we can access any page asynchronously in respect to |
| 15 | * users, because memory failures could happen anytime and anywhere, | 18 | * other VM users, because memory failures could happen anytime and |
| 16 | * possibly violating some of their assumptions. This is why this code | 19 | * anywhere. This could violate some of their assumptions. This is why |
| 17 | * has to be extremely careful. Generally it tries to use normal locking | 20 | * this code has to be extremely careful. Generally it tries to use |
| 18 | * rules, as in get the standard locks, even if that means the | 21 | * normal locking rules, as in get the standard locks, even if that means |
| 19 | * error handling takes potentially a long time. | 22 | * the error handling takes potentially a long time. |
| 20 | * | 23 | * |
| 21 | * The operation to map back from RMAP chains to processes has to walk | 24 | * There are several operations here with exponential complexity because |
| 22 | * the complete process list and has non linear complexity with the number | 25 | * of unsuitable VM data structures. For example the operation to map back |
| 23 | * mappings. In short it can be quite slow. But since memory corruptions | 26 | * from RMAP chains to processes has to walk the complete process list and |
| 24 | * are rare we hope to get away with this. | 27 | * has non linear complexity with the number. But since memory corruptions |
| 28 | * are rare we hope to get away with this. This avoids impacting the core | ||
| 29 | * VM. | ||
| 25 | */ | 30 | */ |
| 26 | 31 | ||
| 27 | /* | 32 | /* |
| @@ -78,7 +83,7 @@ static int hwpoison_filter_dev(struct page *p) | |||
| 78 | return 0; | 83 | return 0; |
| 79 | 84 | ||
| 80 | /* | 85 | /* |
| 81 | * page_mapping() does not accept slab page | 86 | * page_mapping() does not accept slab pages. |
| 82 | */ | 87 | */ |
| 83 | if (PageSlab(p)) | 88 | if (PageSlab(p)) |
| 84 | return -EINVAL; | 89 | return -EINVAL; |
