ext4 writable snapshot provides writable snapshot based on ext4 snapshot, which can be visited at http://sourceforge.net/apps/mediawiki/next3/index.php?title=Ext4_snapshots_TODO. It is a project of GSoC 2012 accepted by openSUSE and I am honored to be mentored by Amir Goldstein firstname.lastname@example.org. Many thanks to Google, openSUSE and Amir. Any suggestions or feedback are welcome by email@example.com :-)
ln command is used to create a writable snapshot, so it is
impossible to create a hard link to a snapshot file. For example,
S C creates a writable snapshot C for snapshot S. S can only be
mounted in read-only mode while C can be mounted in read-write mode.
Writable snapshot basically works, but it is not stable.
Actually, the command creates a snapclone file C in whose inode stores snapshot's inode number. Reads and writes on snapclone work like snapshot files. In other words, if a block is not mapped in snapclone, it is read through to snapshot file, otherwise the block is directly read from the snapclone file. Writes are written to snapclone directly.
We need to fix free block counters of block groups inside writable snapshots, because snapshots block bitmaps are fixed on-the-fly to clear "excluded" block bits, but free blocks counters are not fixed on-the-fly.
Anyone who is interested in filesystem is welcome to help us strengthen ext4 snapshot. Below are the things you can do at the beginning as a warm up dumping into ext4 snapshot.