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 | ||
