On 10/07/2015 09:40 PM, Neil Brown wrote:
Anna Schumaker [off-list ref] writes:
quoted
@@ -1338,34 +1362,26 @@ ssize_t vfs_copy_file_range(struct file *file_in, loff_t pos_in,
struct file *file_out, loff_t pos_out,
size_t len, unsigned int flags)
{
- struct inode *inode_in;
- struct inode *inode_out;
ssize_t ret;
- if (flags)
+ /* Flags should only be used exclusively. */
+ if ((flags & COPY_FR_COPY) && (flags & ~COPY_FR_COPY))
+ return -EINVAL;
+ if ((flags & COPY_FR_REFLINK) && (flags & ~COPY_FR_REFLINK))
+ return -EINVAL;
+ if ((flags & COPY_FR_DEDUP) && (flags & ~COPY_FR_DEDUP))
return -EINVAL;
Do you also need:
if (flags & ~(COPY_FR_COPY | COPY_FR_REFLINK | COPY_FR_DEDUP))
return -EINVAL;
so that future user-space can test if the kernel supports new flags?
Probably. I'll add that in!
Thanks,
Anna
NeilBrown