[RFC PATCH v2] DM: dm-inplace-compress: inplace compressed DM target

From: Ram Pai
Date: Tue Jan 17 2017 - 19:08:06 EST


This patch provides a generic device-mapper inplace compression
device. Originally written by Shaohua Li.
https://www.redhat.com/archives/dm-devel/2013-December/msg00143.html

I have optimized and hardened the code.

Testing:
-------
This compression block device is tested in the following scenarios
a) backing a ext4 filesystem
b) backing swap
Its tested on a PPC64 system only.
More testing is needed on different architectures.

TODO:
-----
For testing, the code was modified to use GFP_ATOMIC allocations when device
is used as swap. A more dynamic mechanism is needed to switch allocation
strategy based on usage. Probably a sysfs interface?

Version v1:
Comments from Alasdair have been incorporated.
https://www.redhat.com/archives/dm-devel/2013-December/msg00144.html

Version v2:
All patches are merged into a single patch.
Major code re-arrangement.
Data and metablocks allocated based on the length of the device
map rather than the size of the backing device.
Size of each entry in the bitmap array is explicitly set
to 32bits.
Attempt to reuse the provided bio buffer space instead of
allocating a new one.

Your comments to improve the code is very much appreciated.

Ram Pai (1):
From: Shaohua Li <shli@xxxxxxxxxx>

.../device-mapper/dm-inplace-compress.txt | 139 ++
drivers/md/Kconfig | 6 +
drivers/md/Makefile | 2 +
drivers/md/dm-inplace-compress.c | 2104 ++++++++++++++++++++
drivers/md/dm-inplace-compress.h | 185 ++
5 files changed, 2436 insertions(+)
create mode 100644 Documentation/device-mapper/dm-inplace-compress.txt
create mode 100644 drivers/md/dm-inplace-compress.c
create mode 100644 drivers/md/dm-inplace-compress.h

--
1.8.3.1