Commit 79fa974f authored by Vivek Goyal's avatar Vivek Goyal Committed by Dan Williams
Browse files

s390,dcssblk,dax: Add dax zero_page_range operation to dcssblk driver



Add dax operation zero_page_range for dcssblk driver.

Suggested-by: default avatarChristoph Hellwig <hch@infradead.org>
Signed-off-by: default avatarVivek Goyal <vgoyal@redhat.com>
Reviewed-by: default avatarGerald Schaefer <gerald.schaefer@de.ibm.com>
CC: linux-s390@vger.kernel.org
Link: https://lore.kernel.org/r/20200228163456.1587-4-vgoyal@redhat.com


Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent f605a263
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -57,11 +57,26 @@ static size_t dcssblk_dax_copy_to_iter(struct dax_device *dax_dev,
	return copy_to_iter(addr, bytes, i);
}

static int dcssblk_dax_zero_page_range(struct dax_device *dax_dev,
				       pgoff_t pgoff, size_t nr_pages)
{
	long rc;
	void *kaddr;

	rc = dax_direct_access(dax_dev, pgoff, nr_pages, &kaddr, NULL);
	if (rc < 0)
		return rc;
	memset(kaddr, 0, nr_pages << PAGE_SHIFT);
	dax_flush(dax_dev, kaddr, nr_pages << PAGE_SHIFT);
	return 0;
}

static const struct dax_operations dcssblk_dax_ops = {
	.direct_access = dcssblk_dax_direct_access,
	.dax_supported = generic_fsdax_supported,
	.copy_from_iter = dcssblk_dax_copy_from_iter,
	.copy_to_iter = dcssblk_dax_copy_to_iter,
	.zero_page_range = dcssblk_dax_zero_page_range,
};

struct dcssblk_dev_info {