Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: PATCH: Relax fdatasync checks to IEEE Std 1003.1-2008
On Mon, Mar 16, 2020 at 08:47:27AM -0400, Greg Troxel wrote:
> [lots of test reports about fdatasync patch]
>
> Thanks -- that's enough for me to be comfortable.
> and it's been proposed for more than long enough, with no adverse
> comments, so I'll commit it soonish.
fwiw, I missed a comment at the top of the function... fixed in
attached patch.
--
Paul Ripke
"Great minds discuss ideas, average minds discuss events, small minds
discuss people."
-- Disputed: Often attributed to Eleanor Roosevelt. 1948.
diff --git a/lib/libc/sys/fdatasync.2 b/lib/libc/sys/fdatasync.2
index 3f12119f0dbb..20da609191f5 100644
--- a/lib/libc/sys/fdatasync.2
+++ b/lib/libc/sys/fdatasync.2
@@ -68,7 +68,7 @@ function will fail if:
.It Bq Er EBADF
The
.Fa fd
-argument is not a valid file descriptor open for writing.
+argument is not a valid file descriptor.
.It Bq Er EINVAL
This implementation does not support synchronized I/O for this file.
.It Bq Er ENOSYS
@@ -93,4 +93,4 @@ and outstanding I/O operations are not guaranteed to have been completed.
The
.Fn fdatasync
function conforms to
-.St -p1003.1b-93 .
+.St -p1003.1-2008 .
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index d51beedbfca9..8cfe5abe6cf8 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -4059,8 +4059,7 @@ sys_fsync(struct lwp *l, const struct sys_fsync_args *uap, register_t *retval)
* Sync a range of file data. API modeled after that found in AIX.
*
* FDATASYNC indicates that we need only save enough metadata to be able
- * to re-read the written data. Note we duplicate AIX's requirement that
- * the file be open for writing.
+ * to re-read the written data.
*/
/* ARGSUSED */
int
@@ -4141,10 +4140,6 @@ sys_fdatasync(struct lwp *l, const struct sys_fdatasync_args *uap, register_t *r
/* fd_getvnode() will use the descriptor for us */
if ((error = fd_getvnode(SCARG(uap, fd), &fp)) != 0)
return (error);
- if ((fp->f_flag & FWRITE) == 0) {
- fd_putfile(SCARG(uap, fd));
- return (EBADF);
- }
vp = fp->f_vnode;
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
error = VOP_FSYNC(vp, fp->f_cred, FSYNC_WAIT|FSYNC_DATAONLY, 0, 0);
Home |
Main Index |
Thread Index |
Old Index