Skip to content

devansh-jain-2002/cow-for-ext4

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

How to setup...

make

If 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.ko

Consider 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 /myext4

Before 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.sh

run the mount.sh script to mount and touch. Make sure to update the device you are mounting on and also the mount point.

TESTINGS

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.

Note:

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.

Tests included:

test_gen

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.

break_cow_ext4

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.

ext4_vs_cowext4_read

Compares the read performance of Ext4 and myExt4 for CoW-copied files (in the latter case).

Result of test: check output graphs.

ext4_vs_cowext4_write

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.

many_readers_same_file

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.

xfs_vs_cow_ext4_rw

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C 99.1%
  • Other 0.9%