makeIf make fails (try adding or removing crypto.o as a myext4.ko dependency, this is required as it is based on some configuration that your Kernel is running on).
insmod myext.koConsider now a disk you want to run the file module on be /dev/sdX
mkfs.ext4 /dev/sdX
and mount the filesystem on an apprpriate mount point.
mount -t myext4 /dev/sdX /myext4Before you move on to test CoW behavior make sure you have run the following (this is currently needed for out code to run). This has to be done immediately after the first mount before you start testing anything else.
touch meta1 meta2 buffer
sync(ideally if the orphan inode feature is on, then touching two files should work).
OR
./mount.shrun the mount.sh script to mount and touch. Make sure to update the device you are mounting on and also the mount point.
We have provided certain tests against our implemenation. The output of the tests has been included, but you can delete it and re-run the tests yourself.
Tests generally use /ext/ or /ext4_/ as the mount point of the myext4 file system mounted for testing. /xfs/ may also be required to be mounted, either for testing against the XFS file system or against vanilla Ext4. Please check the test scripts (usually run.sh) or config files for details.
Run the run.sh file. What is expected out of the script is creation of several files and their reflinks into the directory which is the mount point of the myext.ko module (filesystem) (currently it is /ext4_ within the run.sh). Similar changes might be needed within the C scripts as well which currently have the file name hardcoded.
Creates many 1 MB files, CoW-copies them twice each, and then issues a concurrent write to both of them.
Result of test: metadata file should be as it was before the test was run.
Purpose: to check of metadata file is deleting metadata properly.
Compares the read performance of Ext4 and myExt4 for CoW-copied files (in the latter case).
Result of test: check output graphs.
Checks the read-overhead of myExt4 by filling up the metadata file with a few entries (the initial dds) and then creating a large file, CoW-copying it, and then reading and writing to random positions in the large file. myExt4 will have to query the metadata file at each operation.
Result of test: check output graphs.
Makes many CoW-copies of a large file, and then executes random reads on it to test read time.
Result of test: check output graphs.
Compare XFS performance with myExt4. Two fio config files are provided - a general, random read-write config, config.fio; and a read-only config, config_ro.fio. You can change which file is used inside run.sh.
Result of test: check output graphs.