On Wed 17-08-16 10:11:02, Ross Zwisler wrote: > Currently when doing a DAX hole punch with ext4 we fail to do a writeback. > This is because the logic around filemap_write_and_wait_range() in > ext4_punch_hole() only looks for dirty page cache pages in the radix tree, > not for dirty DAX exceptional entries. > > Signed-off-by: Ross Zwisler <ross.zwisler@xxxxxxxxxxxxxxx> Thanks. The patch looks correct, you can add: Reviewed-by: Jan Kara <jack@xxxxxxx> Although why don't we just simplify the test below to mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)? After all the mapping should not have the dirty tag set if there are no pages / no entries? Honza > @@ -3919,7 +3919,9 @@ int ext4_punch_hole(struct inode *inode, loff_t offset, loff_t length) > * Write out all dirty pages to avoid race conditions > * Then release them. > */ > - if (mapping->nrpages && mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) { > + if (mapping_tagged(mapping, PAGECACHE_TAG_DIRTY) && > + ((!dax_mapping(mapping) && mapping->nrpages) || > + (dax_mapping(mapping) && mapping->nrexceptional))) { > ret = filemap_write_and_wait_range(mapping, offset, > offset + length - 1); > if (ret) -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html