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 2020-05-24, Yorick Hardy wrote:
> Dear Greg and Paul,
>
> On 2020-03-25, Paul Ripke wrote:
> > 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);
>
> On 2020-03-25, Greg Troxel wrote:
> > Paul Ripke <stix%stix.id.au@localhost> writes:
> >
> > > 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.
> >
> > I have committed your patch, exactly as you just sent it. My full
> > release build worked and I have an anita test run in process, just in
> > case.
> >
> > Thanks for perservering on this. It takes many people to fix all the
> > loose ends in an operating system!
>
> I have been trying to find the cause of PR kern/55237. I am not at all
> familiar with the code, so please forgive me for pointing fingers!
>
> I think the call to fd_putfile results in a close of the fd, but that
> does not happen anymore? Should it?
>
> Apologies again if this has nothing to do with kern/55237.
It was not the casue of kern/55237, apologies!
--
Kind regards,
Yorick Hardy
Home |
Main Index |
Thread Index |
Old Index