[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