diff options
Diffstat (limited to 'fs/ocfs2/refcounttree.c')
-rw-r--r-- | fs/ocfs2/refcounttree.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/fs/ocfs2/refcounttree.c b/fs/ocfs2/refcounttree.c index 74db2be75dd6..8ae65c9c020c 100644 --- a/fs/ocfs2/refcounttree.c +++ b/fs/ocfs2/refcounttree.c | |||
@@ -2945,7 +2945,7 @@ static int ocfs2_duplicate_clusters_by_page(handle_t *handle, | |||
2945 | 2945 | ||
2946 | while (offset < end) { | 2946 | while (offset < end) { |
2947 | page_index = offset >> PAGE_CACHE_SHIFT; | 2947 | page_index = offset >> PAGE_CACHE_SHIFT; |
2948 | map_end = (page_index + 1) << PAGE_CACHE_SHIFT; | 2948 | map_end = ((loff_t)page_index + 1) << PAGE_CACHE_SHIFT; |
2949 | if (map_end > end) | 2949 | if (map_end > end) |
2950 | map_end = end; | 2950 | map_end = end; |
2951 | 2951 | ||
@@ -2957,8 +2957,12 @@ static int ocfs2_duplicate_clusters_by_page(handle_t *handle, | |||
2957 | 2957 | ||
2958 | page = grab_cache_page(mapping, page_index); | 2958 | page = grab_cache_page(mapping, page_index); |
2959 | 2959 | ||
2960 | /* This page can't be dirtied before we CoW it out. */ | 2960 | /* |
2961 | BUG_ON(PageDirty(page)); | 2961 | * In case PAGE_CACHE_SIZE <= CLUSTER_SIZE, This page |
2962 | * can't be dirtied before we CoW it out. | ||
2963 | */ | ||
2964 | if (PAGE_CACHE_SIZE <= OCFS2_SB(sb)->s_clustersize) | ||
2965 | BUG_ON(PageDirty(page)); | ||
2962 | 2966 | ||
2963 | if (!PageUptodate(page)) { | 2967 | if (!PageUptodate(page)) { |
2964 | ret = block_read_full_page(page, ocfs2_get_block); | 2968 | ret = block_read_full_page(page, ocfs2_get_block); |
@@ -3170,7 +3174,7 @@ static int ocfs2_cow_sync_writeback(struct super_block *sb, | |||
3170 | 3174 | ||
3171 | while (offset < end) { | 3175 | while (offset < end) { |
3172 | page_index = offset >> PAGE_CACHE_SHIFT; | 3176 | page_index = offset >> PAGE_CACHE_SHIFT; |
3173 | map_end = (page_index + 1) << PAGE_CACHE_SHIFT; | 3177 | map_end = ((loff_t)page_index + 1) << PAGE_CACHE_SHIFT; |
3174 | if (map_end > end) | 3178 | if (map_end > end) |
3175 | map_end = end; | 3179 | map_end = end; |
3176 | 3180 | ||