Introducing overlayfs snapshots project

From: Amir Goldstein
Date: Wed Dec 07 2016 - 09:34:52 EST


Hi All,

I am pleased to announce the overlayfs snapshots project.
Overlayfs snapshots bring file level snapshots capability
to any local file system.

Project requirements:
* Incremental read-only snapshots of directory sub-tree
* Independent of underlying local file system
* Snapshots use available file system disk space
* Snapshot deletion automatically frees up disk space
* Minimal performance overhead to file access in the writable mount
* POSIX compliance for file system operation in the writable mount
* File access to read-only snapshots may incur performance overhead
* Reading from snapshots may exhibit overlayfs non-standard behavior
* Take new snapshot in O(1) time and disk space
* No upper limit on number or size of snapshots

The project has a working POC[1] covering a partial list of the
requirements, a tailored test suite[2] to verify snapshots
consistency and a wiki[3] with more information about the project.

The kernel Documentation page is also available in nice formatting at:
https://github.com/amir73il/overlayfs/wiki/Snapshots-overview

Contributions to overlayfs snapshots project are most welcome
in the form of code review, testing, articles and public attention.

Comments and questions are always welcome.

Amir.

[1] https://github.com/amir73il/linux/tree/ovl_snapshot
[2] https://github.com/amir73il/unionmount-testsuite/tree/ovl_snapshot
[3] https://github.com/amir73il/overlayfs/wiki/Overlayfs-snapshots

Summary of overlayfs snapshots patches in [1]:
----------------------------------------------
Amir Goldstein (10):
ovl: introduce snapshot mount
ovl: explicit copy up/whiteout requests from snapshot mount
ovl: implement snapshot mount lookup
ovl: cow file to snapshot on open for write
ovl: cow file/dir to snapshot on ovl_want_write()
ovl: redirect dir on rename in snapshot mount
ovl: fix set_acl crash with snapshot mount
ovl: real dir operations for snapshot mount
ovl: unhash removed dentries from snapshot
ovl: overlayfs snapshots documentation

Documentation/filesystems/overlayfs-snapshots.txt | 196 +++++++++++++++++
fs/overlayfs/Kconfig | 8 +
fs/overlayfs/Makefile | 1 +
fs/overlayfs/dir.c | 64 +++++-
fs/overlayfs/inode.c | 2 +-
fs/overlayfs/namei.c | 27 ++-
fs/overlayfs/overlayfs.h | 14 ++
fs/overlayfs/ovl_entry.h | 7 +-
fs/overlayfs/readdir.c | 4 +-
fs/overlayfs/snapshot.c | 115 ++++++++++
fs/overlayfs/super.c | 253 +++++++++++++++++++---
fs/overlayfs/util.c | 17 ++
12 files changed, 661 insertions(+), 47 deletions(-)
create mode 100644 Documentation/filesystems/overlayfs-snapshots.txt
create mode 100644 fs/overlayfs/snapshot.c

--
2.7.4