Re: [PATCH v5 02/11] xfs, dax: introduce xfs_dax_aops

From: Christoph Hellwig
Date: Sat Mar 10 2018 - 04:46:44 EST


> +int dax_set_page_dirty(struct page *page)
> +{
> + /*
> + * Unlike __set_page_dirty_no_writeback that handles dirty page
> + * tracking in the page object, dax does all dirty tracking in
> + * the inode address_space in response to mkwrite faults. In the
> + * dax case we only need to worry about potentially dirty CPU
> + * caches, not dirty page cache pages to write back.
> + *
> + * This callback is defined to prevent fallback to
> + * __set_page_dirty_buffers() in set_page_dirty().
> + */
> + return 0;
> +}

Make this a generic noop_set_page_dirty maybe?

> +EXPORT_SYMBOL(dax_set_page_dirty);
> +
> +void dax_invalidatepage(struct page *page, unsigned int offset,
> + unsigned int length)
> +{
> + /*
> + * There is no page cache to invalidate in the dax case, however
> + * we need this callback defined to prevent falling back to
> + * block_invalidatepage() in do_invalidatepage().
> + */
> +}

Same here.

> +EXPORT_SYMBOL(dax_invalidatepage);

And EXPORT_SYMBOL_GPL for anything dax-related, please.

> +const struct address_space_operations xfs_dax_aops = {
> + .writepages = xfs_vm_writepages,

Please split out the DAX case from xfs_vm_writepages.

This patch should probably also split into VFS and XFS parts.