diff options
author | Joseph Myers <joseph@codesourcery.com> | 2016-03-17 12:15:51 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2016-03-17 12:15:51 +0000 |
commit | 4674df40bbe2adf301fa47c8088fcb777048798b (patch) | |
tree | 951f7993908725baa9365fbd5cf13bdd8ce66d64 | |
parent | 86ed888255bcafa7cd3c4eb248815b1ba4eb3699 (diff) | |
download | glibc-4674df40bbe2adf301fa47c8088fcb777048798b.zip glibc-4674df40bbe2adf301fa47c8088fcb777048798b.tar.gz glibc-4674df40bbe2adf301fa47c8088fcb777048798b.tar.bz2 |
Remove __ASSUME_FALLOCATE.
Given current Linux kernel version requirements, we can always assume
the fallocate syscall to be available. This patch removes
__ASSUME_FALLOCATE and a test for whether __NR_fallocate is defined.
Tested for x86_64 and x86 that installed stripped shared libraries are
unchanged by the patch.
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_FALLOCATE):
Remove macro.
* sysdeps/unix/sysv/linux/wordsize-64/posix_fallocate.c: Do not
include <kernel-features.h>.
[!__ASSUME_FALLOCATE]: Remove conditional code.
(posix_fallocate) [__NR_fallocate]: Make code unconditional.
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/kernel-features.h | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/wordsize-64/posix_fallocate.c | 44 |
3 files changed, 21 insertions, 36 deletions
@@ -1,3 +1,12 @@ +2016-03-17 Joseph Myers <joseph@codesourcery.com> + + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_FALLOCATE): + Remove macro. + * sysdeps/unix/sysv/linux/wordsize-64/posix_fallocate.c: Do not + include <kernel-features.h>. + [!__ASSUME_FALLOCATE]: Remove conditional code. + (posix_fallocate) [__NR_fallocate]: Make code unconditional. + 2016-03-16 H.J. Lu <hongjiu.lu@intel.com> * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core_sse4.S diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 4a7460e..51cd63c 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -75,10 +75,6 @@ /* Support for private futexes was added in 2.6.22. */ #define __ASSUME_PRIVATE_FUTEX 1 -/* Support for fallocate was added in 2.6.23, on s390 - only after 2.6.23-rc1. */ -#define __ASSUME_FALLOCATE 1 - /* Support for various CLOEXEC and NONBLOCK flags was added in 2.6.23. */ #define __ASSUME_O_CLOEXEC 1 diff --git a/sysdeps/unix/sysv/linux/wordsize-64/posix_fallocate.c b/sysdeps/unix/sysv/linux/wordsize-64/posix_fallocate.c index 36c7e40..8caee31 100644 --- a/sysdeps/unix/sysv/linux/wordsize-64/posix_fallocate.c +++ b/sysdeps/unix/sysv/linux/wordsize-64/posix_fallocate.c @@ -16,50 +16,30 @@ <http://www.gnu.org/licenses/>. */ #include <fcntl.h> -#include <kernel-features.h> #include <sysdep.h> #define posix_fallocate static internal_fallocate #include <sysdeps/posix/posix_fallocate.c> #undef posix_fallocate -/* The alpha architecture introduced the fallocate system call in - 2.6.33-rc1, so we still need the fallback code. */ -#if !defined __ASSUME_FALLOCATE && defined __NR_fallocate -static int __have_fallocate; -#endif - - /* Reserve storage for the data of the file associated with FD. */ int posix_fallocate (int fd, __off_t offset, __off_t len) { -#ifdef __NR_fallocate -# ifndef __ASSUME_FALLOCATE - if (__glibc_likely (__have_fallocate >= 0)) -# endif - { - INTERNAL_SYSCALL_DECL (err); -# ifdef INTERNAL_SYSCALL_TYPES - int res = INTERNAL_SYSCALL_TYPES (fallocate, err, 4, int, fd, - int, 0, off_t, offset, - off_t, len); -# else - int res = INTERNAL_SYSCALL (fallocate, err, 4, fd, 0, offset, len); -# endif + INTERNAL_SYSCALL_DECL (err); +#ifdef INTERNAL_SYSCALL_TYPES + int res = INTERNAL_SYSCALL_TYPES (fallocate, err, 4, int, fd, + int, 0, off_t, offset, + off_t, len); +#else + int res = INTERNAL_SYSCALL (fallocate, err, 4, fd, 0, offset, len); +#endif - if (! INTERNAL_SYSCALL_ERROR_P (res, err)) - return 0; + if (! INTERNAL_SYSCALL_ERROR_P (res, err)) + return 0; -# ifndef __ASSUME_FALLOCATE - if (__glibc_unlikely (INTERNAL_SYSCALL_ERRNO (res, err) == ENOSYS)) - __have_fallocate = -1; - else -# endif - if (INTERNAL_SYSCALL_ERRNO (res, err) != EOPNOTSUPP) - return INTERNAL_SYSCALL_ERRNO (res, err); - } -#endif + if (INTERNAL_SYSCALL_ERRNO (res, err) != EOPNOTSUPP) + return INTERNAL_SYSCALL_ERRNO (res, err); return internal_fallocate (fd, offset, len); } |