/* from == to == 0 is code for "zero the entire cluster region"  */
static void ocfs2_clear_page_regions(struct page *page, struct ocfs2_super *osb, u32 cpos, unsigned from, unsigned to)
/* from == to == 0 is code for "zero the entire cluster region"  */
static void ocfs2_clear_page_regions(struct page *page, struct ocfs2_super *osb, u32 cpos, unsigned from, unsigned to)
{
	void *kaddr;
	unsigned int cluster_start, cluster_end;
	ocfs2_figure_cluster_boundaries(osb, cpos, &cluster_start, &cluster_end);
	kaddr = kmap_atomic(page, KM_USER0);
	if (from || to) {
		if (from > cluster_start)
			memset(kaddr + cluster_start, 0, from - cluster_start);
		if (to < cluster_end)
			memset(kaddr + to, 0, cluster_end - to);
	} else {
		memset(kaddr + cluster_start, 0, cluster_end - cluster_start);
	}
	kunmap_atomic(kaddr, KM_USER0);
}