Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-9]: src/sys/kern Pull up following revision(s) (requested by gdt ...



details:   https://anonhg.NetBSD.org/src/rev/a2ee7acd7d4b
branches:  netbsd-9
changeset: 963794:a2ee7acd7d4b
user:      martin <martin%NetBSD.org@localhost>
date:      Wed Apr 22 18:07:37 2020 +0000

description:
Pull up following revision(s) (requested by gdt in ticket #840):

        sys/kern/vfs_syscalls.c: revision 1.544
        lib/libc/sys/fdatasync.2: revision 1.17

Relax fdatasync restriction that fd be writable

The restriction that a fd passed to fdatasync(2) must be writable was
added in 2003 in order to comply with POSIX.  Since then, POSIX has
removed that requirement, and POSIX-valid programs have been therefore
encountering errors on NetBSD.

Patch by Paul Ripke after discussion on netbsd-users.  Issue
discovered with pkgsrc/databases/mongodb3 as used by pkgsrc/net/unifi.

diffstat:

 lib/libc/sys/fdatasync.2 |   6 +++---
 sys/kern/vfs_syscalls.c  |  11 +++--------
 2 files changed, 6 insertions(+), 11 deletions(-)

diffs (63 lines):

diff -r 159ac51a77df -r a2ee7acd7d4b lib/libc/sys/fdatasync.2
--- a/lib/libc/sys/fdatasync.2  Wed Apr 22 18:05:11 2020 +0000
+++ b/lib/libc/sys/fdatasync.2  Wed Apr 22 18:07:37 2020 +0000
@@ -1,4 +1,4 @@
-.\"    $NetBSD: fdatasync.2,v 1.16 2008/04/30 13:10:51 martin Exp $
+.\"    $NetBSD: fdatasync.2,v 1.16.66.1 2020/04/22 18:07:37 martin Exp $
 .\"
 .\" Copyright (c) 1998 The NetBSD Foundation, Inc.
 .\" All rights reserved.
@@ -68,7 +68,7 @@
 .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 @@
 The
 .Fn fdatasync
 function conforms to
-.St -p1003.1b-93 .
+.St -p1003.1-2008 .
diff -r 159ac51a77df -r a2ee7acd7d4b sys/kern/vfs_syscalls.c
--- a/sys/kern/vfs_syscalls.c   Wed Apr 22 18:05:11 2020 +0000
+++ b/sys/kern/vfs_syscalls.c   Wed Apr 22 18:07:37 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: vfs_syscalls.c,v 1.533 2019/07/06 14:37:24 maxv Exp $  */
+/*     $NetBSD: vfs_syscalls.c,v 1.533.2.1 2020/04/22 18:07:37 martin Exp $    */
 
 /*-
  * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -70,7 +70,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls.c,v 1.533 2019/07/06 14:37:24 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls.c,v 1.533.2.1 2020/04/22 18:07:37 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_fileassoc.h"
@@ -4044,8 +4044,7 @@
  * 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
@@ -4126,10 +4125,6 @@
        /* 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