On Mon, Nov 16, 2015 at 04:04:31AM -0800, Christoph Hellwig wrote: > Hi Darrick, > > your new generic/157 xfs test brings up an interesting issue: error > returns forthe various clone failure cases. It seems like this case > was written fo the XFS case which differs a lot from the error chosen > by btrfs and mostly followed by NFS. I'd say it might be a better idea > to follow the btrfs example as the btrfs ioctls have been in use for > a while. The only shortcoming I see in btrfs is that id doesn't > explicitly check for non-directory, non-regular file items as the > source. I have to admit I'm kinda surprised that it doesn't blow up, > given that NFS instantly did when I removed those checks. > > FYI, output from the test on btrfs below: > > > --- tests/generic/157.out 2015-11-14 07:56:31.000000000 +0000 > +++ /root/xfstests/results//generic/157.out.bad 2015-11-16 11:58:52.879078894 +0000 > @@ -2,24 +2,24 @@ > Format and mount > Create the original files > Try cross-device reflink > -XFS_IOC_CLONE_RANGE: Invalid cross-device link > +reflink: Invalid cross-device link Hmm, I think you're running an older version of xfsprogs for-next. The "reflink:" perror prefix was changed to the ioctl name (for all three ioctls) per the comment in: http://oss.sgi.com/archives/xfs/2015-09/msg00338.html > Try unaligned reflink > -XFS_IOC_CLONE_RANGE: Invalid argument > +reflink: Invalid argument > Try overlapping reflink > -XFS_IOC_CLONE_RANGE: Invalid argument > +reflink: Invalid argument > Try reflink past EOF > -XFS_IOC_CLONE_RANGE: Invalid argument > +reflink: Invalid argument > Try to reflink a dir > -XFS_IOC_CLONE_RANGE: Is a directory > +reflink: Is a directory > Try to reflink a device > -XFS_IOC_CLONE_RANGE: Invalid argument > +/mnt/test/test-157/dev1: No such device or address Huh. How did you get -ENODEV here? I ran this on 4.3 and got -EINVAL. > Try to reflink to a dir > -/mnt/test-157/dir1: Is a directory > +/mnt/test/test-157/dir1: Is a directory Drat, will fix. > Try to reflink to a device > -XFS_IOC_CLONE_RANGE: Operation not supported > +/mnt/test/test-157/dev1: No such device or address Same here as the other device case. > Try to reflink to a fifo > -XFS_IOC_CLONE_RANGE: Operation not supported > +reflink: Inappropriate ioctl for device Errrgh, the golden output of this test reflects the changes to the input checking in Anna/Peng's copy_file_range/clone_file_range patches. So, I guess the question is, should I reset the golden output to whatever btrfs spits out before that patchset, and we'll consider the alterations to be bugs/regressions/whatever that ought to be fixed in their patches? > Try to reflink an append-only file > -XFS_IOC_CLONE_RANGE: Bad file descriptor > +reflink: Invalid argument Same as above. --D > Reflink two files > Check scratch fs _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs