[Darrick Cc'd] On Sat, Dec 17, 2016 at 06:49:55PM -0800, Linus Torvalds wrote: > On Fri, Dec 16, 2016 at 2:12 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > In this pile: > > * autofs-namespace series > > * dedupe stuff > > * more struct path constification > > When looking at the conflict, I looked at that part of > vfs_clone_file_prep_inodes(), and reacted to the insanity. > > WTF? > > /* Zero length dedupe exits immediately; reflink goes to EOF. */ > if (*len == 0) { > if (is_dedupe) { > *len = 0; > return 0; > } > *len = isize - pos_in; > } > > I'll just leave you to read through that part a bit more. Because > there are two completely insane things going on in that code sequence. One, AFAICS - pointless *len = 0 in case of is_dedupe. That's a counterpart of /* Zero length dedupe exits immediately; reflink goes to EOF. */ if (len == 0) { if (is_dedupe) { ret = 0; goto out_unlock; } len = isize - pos_in; } in mainline xfs_reflink_remap_range(). What else am I missing there? I'm not thrilled with the calling conventions they'd used, and that *len = 0; shouldn't have been slapped there (at a guess, by inertia from the conversion of the chunk right before that one - /* Are we going all the way to the end? */ isize = i_size_read(inode_in); if (isize == 0) { ret = 0; goto out_unlock; } in mainline, needing *len = 0; after conversion), but I don't see what else are you refering to in that snippet... -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html