On Tue, Nov 23, 2021 at 01:46:35PM -0800, Dan Williams wrote: > > + const struct iomap_ops *ops) > > +{ > > + unsigned int blocksize = i_blocksize(inode); > > + unsigned int off = pos & (blocksize - 1); > > + > > + /* Block boundary? Nothing to do */ > > + if (!off) > > + return 0; > > It took me a moment to figure out why this was correct. I see it was > also copied from iomap_truncate_page(). It makes sense for DAX where > blocksize >= PAGE_SIZE so it's always the case that the amount of > capacity to zero relative to a page is from @pos to the end of the > block. Is there something else that protects the blocksize < PAGE_SIZE > case outside of DAX? > > Nothing to change for this patch, just a question I had while reviewing. This is a helper for truncate ->setattr, where everything outside the block is deallocated. So zeroing is only needed inside the block.