Partition Surprise consists of modules divided into these layers:
- User-interface frontends: is a standalone program built on
libsurprise implementing a user interface. The user is allowed to view
and modify all the partitions. All the changes made by user may be
discarded or commited into the disc.
- Partition-module: this module compares original and current
state. It takes care about all types of partition tables, decides,
which optimalizations may be performed and which module will be called
(on-line ext2 resizer, fast superblock rewrite, fast partition mover,
slow filesystem rebuild).
- General-converter: this module the a heart of Partition
Surprise. It permorfs the general in-place conversion of any filesystem
set to any filesystem set. The process is described in later
- Filesystem backends: there's a special module for every
supported filesystem. It supports reading metadata from filesystem and
creating a new filesystem with hints given by GConv.