diff --git a/kmod/src/ioctl.c b/kmod/src/ioctl.c index a7423362..7a73d4de 100644 --- a/kmod/src/ioctl.c +++ b/kmod/src/ioctl.c @@ -441,8 +441,6 @@ static long scoutfs_ioc_data_wait_err(struct file *file, unsigned long arg) if (!S_ISREG(inode->i_mode)) { ret = -EINVAL; - } else if (scoutfs_inode_data_version(inode) != args.data_version) { - ret = -ESTALE; } else { ret = scoutfs_data_wait_err(inode, sblock, eblock, args.op, args.err); diff --git a/kmod/src/ioctl.h b/kmod/src/ioctl.h index 9f79839e..cefecd46 100644 --- a/kmod/src/ioctl.h +++ b/kmod/src/ioctl.h @@ -366,10 +366,15 @@ struct scoutfs_ioctl_statfs_more { * * Find current waiters that match the inode, op, and block range to wake * up and return an error. + * + * (*) ca. v1.25 and earlier required that the data_version passed match + * that of the waiter, but this check is removed. It was never needed + * because no data is modified during this ioctl. Any data_version value + * here is thus since then ignored. */ struct scoutfs_ioctl_data_wait_err { __u64 ino; - __u64 data_version; + __u64 data_version; /* Ignored, see above (*) */ __u64 offset; __u64 count; __u64 op;