|author||Nicolas Pitre <firstname.lastname@example.org>||2017-10-13 16:09:23 -0400|
|committer||Al Viro <email@example.com>||2017-10-15 00:47:21 -0400|
cramfs: direct memory access support
Small embedded systems typically execute the kernel code in place (XIP) directly from flash to save on precious RAM usage. This patch adds to cramfs the ability to consume filesystem data directly from flash as well. Cramfs is particularly well suited to this feature as it is very simple with low RAM usage, and with this feature it is possible to use it with no block device support and consequently even lower RAM usage. This patch was inspired by a similar patch from Shane Nay dated 17 years ago that used to be very popular in embedded circles but never made it into mainline. This is a cleaned-up implementation that uses far fewer ifdef's and gets the actual memory location for the filesystem image via MTD at run time. In the context of small IoT deployments, this functionality has become relevant and useful again. Signed-off-by: Nicolas Pitre <firstname.lastname@example.org> Tested-by: Chris Brandt <email@example.com> Reviewed-by: Christoph Hellwig <firstname.lastname@example.org> Signed-off-by: Al Viro <email@example.com>
Diffstat (limited to 'fs/cramfs/Kconfig')
1 files changed, 29 insertions, 1 deletions
diff --git a/fs/cramfs/Kconfig b/fs/cramfs/Kconfig
index 11b29d491b7c..ef86b06bc064 100644
@@ -1,6 +1,5 @@
tristate "Compressed ROM file system support (cramfs) (OBSOLETE)"
- depends on BLOCK
Saying Y here includes support for CramFs (Compressed ROM File
@@ -20,3 +19,32 @@ config CRAMFS
in terms of performance and features.
If unsure, say N.
+ bool "Support CramFs image over a regular block device" if EXPERT
+ depends on CRAMFS && BLOCK
+ default y
+ This option allows the CramFs driver to load data from a regular
+ block device such a disk partition or a ramdisk.
+ bool "Support CramFs image directly mapped in physical memory"
+ depends on CRAMFS && MTD
+ default y if !CRAMFS_BLOCKDEV
+ This option allows the CramFs driver to load data directly from
+ a linear adressed memory range (usually non volatile memory
+ like flash) instead of going through the block device layer.
+ This saves some memory since no intermediate buffering is
+ The location of the CramFs image is determined by a
+ MTD device capable of direct memory mapping e.g. from
+ the 'physmap' map driver or a resulting MTD partition.
+ For example, this would mount the cramfs image stored in
+ the MTD partition named "xip_fs" on the /mnt mountpoint:
+ mount -t cramfs mtd:xip_fs /mnt
+ If unsure, say N.