[Ocfs2-devel] [PATCH 0/4] Add readahead support in CoW for reflinked files.

Tao Ma tao.ma at oracle.com
Tue Jun 29 01:27:24 PDT 2010


Hi all,
	When we try to CoW some clusters for a reflinked file, we have to read 
the contents first, allocate some clusters and then map these pages to 
the new clusters. Currently, we use block_read_full_page to read it, but 
it is a little bit slower.
	So this patch set try to add readahead support for CoW. Before we 
start, we call readahead first so that the pages can be read at the very 
first. And during CoW, when we find a readahead page, we know that we 
need to move the readahead window, so a new asyncreadahead is called.

I have a small test to show how readahead speed up CoW.
readahead_test()
{
MNT_DIR=/mnt/ocfs2
DEVICE=/dev/sda8
echo 'y'|mkfs.ocfs2 --fs-features=local,refcount $DEVICE
mount -t ocfs2 $DEVICE $MNT_DIR
FILE=$MNT_DIR/$RANDOM
REFLINK=$MNT_DIR/$RANDOM
dd if=/dev/zero of=$FILE bs=1M count=1000
reflink $FILE $REFLINK
dd if=/dev/zero of=$REFLINK bs=1M count=1000 conv=notrunc
umount $MNT_DIR
}

Without these patch set, the 2nd dd has a i/o speed of 22MB/s.
with the patch set, the i/o speed is increased to about 40MB/s.

Any comments are welcomed.

Regards,
Tao



More information about the Ocfs2-devel mailing list