This module knows nothing about the concrete filesystems. It takes care about partition tables in the physical discs and perfmorms the general optimalizations.
In the beginning it reads all the partition tables and tries to identify all the filesystem. All registered filesystems have a special callback function which returns TRUE if a filesystem is detected. This allows Partition Surprise to work with badly filled partition table types.
After filesystems are identified, imported filesystem parameters are read (e.g. block_size for ext2, fat_bits for FAT,...). Some of the parameters can not be successfully detected and they should be set by the user (fat_bits in some rare cases, codepage of filenames,...). User interface must allow the user to modify the values.
When a new state is verified/commited, the original and target states are compared. When a change is detected, the module tries to do these optimalizations:
The conversion of a filesystem may need to use more free space than it is available in the converted filesystem. A free space from all partitions that participate on the convesion is used as a temporary space.
After conversion is finished, the discs are synced, partition tables are reread by Linux Kernel and the program completely rereads the partition information again.
Partition module supports these types of partition tables: