> +static int xfs_wait_dax_page( > + atomic_t *count, > + unsigned int mode) > +{ Normal XFS style would be: static int xfs_wait_dax_page( atomic_t *count, unsigned int mode) { > + struct page *page = refcount_to_page(count); > + struct address_space *mapping = page->mapping; > + struct inode *inode = mapping->host; > + struct xfs_inode *ip = XFS_I(inode); Looks we don't really need the mapping and inode variables: struct page *page = refcount_to_page(count); struct xfs_inode *ip = XFS_I(page->mapping->host); > + do { > + if (flags & XFS_BREAK_REMOTE) > + ret = xfs_break_leased_layouts(inode, iolock); > + if (ret) > + return ret; > + if (flags & XFS_BREAK_MAPS) > + ret = xfs_break_dax_layouts(inode, *iolock); > + /* > + * EBUSY indicates that we dropped locks and waited for > + * the dax layout to be released. When that happens we > + * need to revalidate that no new leases or pinned dax > + * mappings have been established. > + */ > + } while (ret == -EBUSY); Maybe instead of the flags argument this should be a type argument of something like enum layout_break_reason { BREAK_WRITE, /* write to file */ BREAK_TRUNCATE, /* truncate or hole punch */ }; as that makes the intent more clear?