cramfs: implement uncompressed and arbitrary data block positioning
authorNicolas Pitre <nicolas.pitre@linaro.org>
Thu, 12 Oct 2017 06:16:11 +0000 (02:16 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 15 Oct 2017 04:47:22 +0000 (00:47 -0400)
commitfd4f6f2a78aeaebb7094c1bb9b30623d18a86e4c
treecf6e32f1d7207c0cd63fb606ae5510a1bd5f39f7
parent99c18ce580c6cc6763e694b4ce320d7b226ab59b
cramfs: implement uncompressed and arbitrary data block positioning

Two new capabilities are introduced here:

- The ability to store some blocks uncompressed.

- The ability to locate blocks anywhere.

Those capabilities can be used independently, but the combination
opens the possibility for execute-in-place (XIP) of program text segments
that must remain uncompressed, and in the MMU case, must have a specific
alignment.  It is even possible to still have the writable data segments
from the same file compressed as they have to be copied into RAM anyway.

This is achieved by giving special meanings to some unused block pointer
bits while remaining compatible with legacy cramfs images.

Signed-off-by: Nicolas Pitre <nico@linaro.org>
Tested-by: Chris Brandt <chris.brandt@renesas.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/cramfs/README
fs/cramfs/inode.c
include/uapi/linux/cramfs_fs.h