svn commit: r261561 - in stable/9: lib/libc/gen lib/libc/sys sys/compat/freebsd32 sys/kern
Konstantin Belousov
kib at FreeBSD.org
Thu Feb 6 19:47:52 UTC 2014
Author: kib
Date: Thu Feb 6 19:47:50 2014
New Revision: 261561
URL: http://svnweb.freebsd.org/changeset/base/261561
Log:
MFC r261080:
The posix_fallocate(2) syscall should return error number on error,
without modifying errno.
MFC r261290:
The posix_madvise(3) and posix_fadvise(2) should return error on
failure, same as posix_fallocate(2).
Modified:
stable/9/lib/libc/gen/pmadvise.c
stable/9/lib/libc/sys/madvise.2
stable/9/lib/libc/sys/posix_fadvise.2
stable/9/lib/libc/sys/posix_fallocate.2
stable/9/sys/compat/freebsd32/freebsd32_misc.c
stable/9/sys/kern/vfs_syscalls.c
Directory Properties:
stable/9/lib/libc/ (props changed)
stable/9/lib/libc/sys/ (props changed)
stable/9/sys/ (props changed)
Modified: stable/9/lib/libc/gen/pmadvise.c
==============================================================================
--- stable/9/lib/libc/gen/pmadvise.c Thu Feb 6 19:47:17 2014 (r261560)
+++ stable/9/lib/libc/gen/pmadvise.c Thu Feb 6 19:47:50 2014 (r261561)
@@ -8,9 +8,19 @@
__FBSDID("$FreeBSD$");
#include <sys/mman.h>
+#include <errno.h>
int
posix_madvise(void *address, size_t size, int how)
{
- return madvise(address, size, how);
+ int ret, saved_errno;
+
+ saved_errno = errno;
+ if (madvise(address, size, how) == -1) {
+ ret = errno;
+ errno = saved_errno;
+ } else {
+ ret = 0;
+ }
+ return (ret);
}
Modified: stable/9/lib/libc/sys/madvise.2
==============================================================================
--- stable/9/lib/libc/sys/madvise.2 Thu Feb 6 19:47:17 2014 (r261560)
+++ stable/9/lib/libc/sys/madvise.2 Thu Feb 6 19:47:50 2014 (r261561)
@@ -28,7 +28,7 @@
.\" @(#)madvise.2 8.1 (Berkeley) 6/9/93
.\" $FreeBSD$
.\"
-.Dd July 19, 1996
+.Dd January 30, 2014
.Dt MADVISE 2
.Os
.Sh NAME
@@ -50,7 +50,10 @@ allows a process that has knowledge of i
to describe it to the system.
The
.Fn posix_madvise
-interface is identical and is provided for standards conformance.
+interface is identical, except it returns an error number on error and does
+not modify
+.Va errno ,
+and is provided for standards conformance.
.Pp
The known behaviors are:
.Bl -tag -width MADV_SEQUENTIAL
Modified: stable/9/lib/libc/sys/posix_fadvise.2
==============================================================================
--- stable/9/lib/libc/sys/posix_fadvise.2 Thu Feb 6 19:47:17 2014 (r261560)
+++ stable/9/lib/libc/sys/posix_fadvise.2 Thu Feb 6 19:47:50 2014 (r261561)
@@ -28,7 +28,7 @@
.\" @(#)madvise.2 8.1 (Berkeley) 6/9/93
.\" $FreeBSD$
.\"
-.Dd June 19, 2012
+.Dd January 30, 2014
.Dt POSIX_FADVISE 2
.Os
.Sh NAME
@@ -94,7 +94,7 @@ Future access to this data may require a
.Sh ERRORS
The
.Fn posix_fadvise
-system call will fail if:
+system call returns zero on success, and an error on failure:
.Bl -tag -width Er
.It Bq Er EBADF
The
Modified: stable/9/lib/libc/sys/posix_fallocate.2
==============================================================================
--- stable/9/lib/libc/sys/posix_fallocate.2 Thu Feb 6 19:47:17 2014 (r261560)
+++ stable/9/lib/libc/sys/posix_fallocate.2 Thu Feb 6 19:47:50 2014 (r261561)
@@ -84,9 +84,8 @@ that reduces the file size to a size sma
If successful,
.Fn posix_fallocate
returns zero.
-It returns -1 on failure, and sets
-.Va errno
-to indicate the error.
+It returns an error on failure, without setting
+.Va errno .
.Sh ERRORS
Possible failure conditions:
.Bl -tag -width Er
Modified: stable/9/sys/compat/freebsd32/freebsd32_misc.c
==============================================================================
--- stable/9/sys/compat/freebsd32/freebsd32_misc.c Thu Feb 6 19:47:17 2014 (r261560)
+++ stable/9/sys/compat/freebsd32/freebsd32_misc.c Thu Feb 6 19:47:50 2014 (r261561)
@@ -2953,8 +2953,9 @@ freebsd32_posix_fallocate(struct thread
struct freebsd32_posix_fallocate_args *uap)
{
- return (kern_posix_fallocate(td, uap->fd,
- PAIR32TO64(off_t, uap->offset), PAIR32TO64(off_t, uap->len)));
+ td->td_retval[0] = kern_posix_fallocate(td, uap->fd,
+ PAIR32TO64(off_t, uap->offset), PAIR32TO64(off_t, uap->len));
+ return (0);
}
int
@@ -2962,8 +2963,10 @@ freebsd32_posix_fadvise(struct thread *t
struct freebsd32_posix_fadvise_args *uap)
{
- return (kern_posix_fadvise(td, uap->fd, PAIR32TO64(off_t, uap->offset),
- PAIR32TO64(off_t, uap->len), uap->advice));
+ td->td_retval[0] = kern_posix_fadvise(td, uap->fd,
+ PAIR32TO64(off_t, uap->offset), PAIR32TO64(off_t, uap->len),
+ uap->advice);
+ return (0);
}
int
Modified: stable/9/sys/kern/vfs_syscalls.c
==============================================================================
--- stable/9/sys/kern/vfs_syscalls.c Thu Feb 6 19:47:17 2014 (r261560)
+++ stable/9/sys/kern/vfs_syscalls.c Thu Feb 6 19:47:50 2014 (r261561)
@@ -4880,7 +4880,9 @@ int
sys_posix_fallocate(struct thread *td, struct posix_fallocate_args *uap)
{
- return (kern_posix_fallocate(td, uap->fd, uap->offset, uap->len));
+ td->td_retval[0] = kern_posix_fallocate(td, uap->fd, uap->offset,
+ uap->len);
+ return (0);
}
/*
@@ -5018,6 +5020,7 @@ int
sys_posix_fadvise(struct thread *td, struct posix_fadvise_args *uap)
{
- return (kern_posix_fadvise(td, uap->fd, uap->offset, uap->len,
- uap->advice));
+ td->td_retval[0] = kern_posix_fadvise(td, uap->fd, uap->offset,
+ uap->len, uap->advice);
+ return (0);
}
More information about the svn-src-stable-9
mailing list