The cowloop driver allows block-devices or files to be used
in a read-write fashion without modifying the block-device or file itself.
Modified data-blocks are not written back to the original read-only device,
instead they are written to a separate file called the
copy-on-write file or cowfile.
The cowloop driver offers (default) 16 cowdevices. To every cowdevice
a read-only device (file) can be assigned with a corresponding cowfile
to store the modifications for that read-only device.
The cowloop driver offers various possibilities, such as:
The cowloop driver can be used for any kind of filesystem-type
(even non-filesystem data can be accessed in a read-write fashion).
Obviously the filesystem-module that lies on top of the cowloop driver
should allow write-accesses to that particular type of filesystem.
A filesystem stored on a non-writable medium
(on a write-protected floppy, in a file on a cdrom/dvd) can still
be mounted read-write via a cowdevice.
One filesystem can be used as a basis for various independent sessions
that can be active in parallel.
For each session a separate cowdevice is prepared. Every cowdevice could
use the same read-only device (or file) holding the filesystem, while
every cowdevice uses a dedicated cowfile holding the specific modifications
for that session.
Each cowdevice is mounted separately via the cowloop driver and
unmounted again after use.
A database stored in a file or on a block-device can be used read-write
without modifying the original contents.