> @@ -1415,11 +1419,17 @@ xfs_reflink_remap_range( > > trace_xfs_reflink_remap_range(src, pos_in, len, dest, pos_out); > > + if (len == 0) { > + ret = 0; > + goto out_unlock; > + } > + As pointed out last time this check is superflous, right above we have this check: if (ret < 0 || len == 0) return ret; > ret = xfs_reflink_remap_blocks(src, sfsbno, dest, dfsbno, fsblen, > - pos_out + len); > + &remappedfsb, pos_out + len); > + remapped_bytes = min_t(loff_t, len, XFS_FSB_TO_B(mp, remappedfsb)); I still think returning the bytes from the function would be saner, but maybe that's just me.