[PATCH v5 0/3] Retry Large Buffer Allocations
Grant Erickson
marathon96 at gmail.com
Fri Apr 8 11:51:31 EDT 2011
When handling user space read or write requests via mtd_{read,write}
or JFFS2 medium scan requests, the operations can fail because the
code backing these operations frequently requests large (128 KiB),
contiguous blocks of memory using kmalloc.
Under low-memory or highly-fragmented situations, particularly on
embedded systems with no swap store, these allocations will frequently
fail with -ENOMEM.
This patch series adds a common function to handle these allocation
requests in both the MTD driver and JFFS2 file system by exponentially
backing off on the size of the requested kernel transfer buffer until
it succeeds or until the requested transfer buffer size falls below
the page size.
This helps ensure the operation can succeed under low-memory,
highly-fragmented situations albeit somewhat more slowly.
v2: Incorporated coding style and comment feedback from Artem.
v3: Incorporated more feedback from Artem. Retargeted patch against
l2-mtd-2.6.
v4: Incorporated feedback from Artem about compilation on 64-bit
architectures.
v5: Split the patch into a series.
Signed-off-by: Grant Erickson <marathon96 at gmail.com>
Tested-by: Ben Gardiner <bengardiner at nanometrics.ca>
---
More information about the linux-mtd
mailing list