> +iomap_zero_range_skip_uncached(struct inode *inode, loff_t *pos, > + loff_t *count, loff_t *written) > +{ > + unsigned dirty_offset, bytes = 0; > + > + dirty_offset = page_cache_seek_hole_data(inode, *pos, *count, > + SEEK_DATA); > + if (dirty_offset == -ENOENT) > + bytes = *count; > + else if (dirty_offset > *pos) > + bytes = dirty_offset - *pos; > + > + if (bytes) { > + *pos += bytes; > + *count -= bytes; > + *written += bytes; > + } I find the calling conventions weird. why not return bytes and keep the increments/decrements of the three variables in the caller?