On Wed, Jan 29, 2020 at 04:03:37PM -0500, Vivek Goyal wrote: > I am looking into getting rid of dependency on block device in dax > path. One such place is __dax_zero_page_range() which checks if > range being zeroed is aligned to block device logical size, then > it calls bdev_issue_zeroout() instead of doing memset(). Calling > blkdev_issue_zeroout() also clears bad blocks and poison if any > in that range. > > This path is used by iomap_zero_range() which in-turn is being > used by filesystems to zero partial filesystem system blocks. > For zeroing full filesystem blocks we seem to be calling > blkdev_issue_zeroout() which clears bad blocks and poison in that > range. > > So this code currently only seems to help with partial filesystem > block zeroing. That too only if truncation/hole_punch happens on > device logical block size boundary. > > To avoid using blkdev_issue_zeroout() in this path, I proposed another > patch here which adds another dax operation to zero out a rangex and > clear poison. I'll have to defer to Dan and other on the poison clearing issue, as it keeps confusing me everytime I look into how it is supposed to work.. But in the end we'll need a path that doesn't realy on the block device to clear poison anyway, so I think a method will ultimatively be needed. That being said this patch looks nice :)