On 9/25/20 11:35 PM, Christoph Hellwig wrote:
On Fri, Sep 25, 2020 at 01:44:41PM -0700, Ralph Campbell wrote:
                error = ___wait_var_event(&page->_refcount,
-                               atomic_read(&page->_refcount) == 1,
+                               dax_layout_is_idle_page(page),
                                TASK_INTERRUPTIBLE, 0, 0,
                                ext4_wait_dax_page(ei));

+++ b/fs/xfs/xfs_file.c
@@ -750,7 +750,7 @@ xfs_break_dax_layouts(
*retry = true;
        return ___wait_var_event(&page->_refcount,
-                       atomic_read(&page->_refcount) == 1, TASK_INTERRUPTIBLE,
+                       dax_layout_is_idle_page(page), TASK_INTERRUPTIBLE,
                        0, 0, xfs_wait_dax_page(inode));
  }

I still think a litte helper macro would be nice here:

#define dax_wait_page(_inode, _page, _wait_cb)                          \
        ___wait_var_event(&(_page)->_refcount,                           \
                atomic_read(&(_page)->_refcount) == 1,                   \
                TASK_INTERRUPTIBLE, dax_layout_is_idle_page(_page),     \
                TASK_INTERRUPTIBLE, 0, 0, _wait_cb(_inode));

OK, I'll add it in v3.

Reply via email to