From: Tao Ma Date: Wed, 14 Jul 2010 03:19:32 +0000 (+0800) Subject: ocfs2: Don't duplicate pages past i_size during CoW. X-Git-Tag: v2.6.35-rc6~34^2~3 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=f5e27b6ddfbafdd9c9c2f06bbf28af12581409bc;p=~emulex%2Finfiniband.git ocfs2: Don't duplicate pages past i_size during CoW. During CoW, the pages after i_size don't contain valid data, so there's no need to read and duplicate them. Signed-off-by: Tao Ma Signed-off-by: Joel Becker --- diff --git a/fs/ocfs2/refcounttree.c b/fs/ocfs2/refcounttree.c index 32949df1069..3ac5aa733e9 100644 --- a/fs/ocfs2/refcounttree.c +++ b/fs/ocfs2/refcounttree.c @@ -2931,6 +2931,12 @@ static int ocfs2_duplicate_clusters_by_page(handle_t *handle, offset = ((loff_t)cpos) << OCFS2_SB(sb)->s_clustersize_bits; end = offset + (new_len << OCFS2_SB(sb)->s_clustersize_bits); + /* + * We only duplicate pages until we reach the page contains i_size - 1. + * So trim 'end' to i_size. + */ + if (end > i_size_read(context->inode)) + end = i_size_read(context->inode); while (offset < end) { page_index = offset >> PAGE_CACHE_SHIFT;