1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00

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.
This commit is contained in:
Joseph Myers
2016-03-17 12:15:51 +00:00
parent 86ed888255
commit 4674df40bb
3 changed files with 22 additions and 37 deletions

View File

@ -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> 2016-03-16 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core_sse4.S * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core_sse4.S

View File

@ -75,10 +75,6 @@
/* Support for private futexes was added in 2.6.22. */ /* Support for private futexes was added in 2.6.22. */
#define __ASSUME_PRIVATE_FUTEX 1 #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 /* Support for various CLOEXEC and NONBLOCK flags was added in
2.6.23. */ 2.6.23. */
#define __ASSUME_O_CLOEXEC 1 #define __ASSUME_O_CLOEXEC 1

View File

@ -16,51 +16,31 @@
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <fcntl.h> #include <fcntl.h>
#include <kernel-features.h>
#include <sysdep.h> #include <sysdep.h>
#define posix_fallocate static internal_fallocate #define posix_fallocate static internal_fallocate
#include <sysdeps/posix/posix_fallocate.c> #include <sysdeps/posix/posix_fallocate.c>
#undef posix_fallocate #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. */ /* Reserve storage for the data of the file associated with FD. */
int int
posix_fallocate (int fd, __off_t offset, __off_t len) posix_fallocate (int fd, __off_t offset, __off_t len)
{ {
#ifdef __NR_fallocate INTERNAL_SYSCALL_DECL (err);
# ifndef __ASSUME_FALLOCATE #ifdef INTERNAL_SYSCALL_TYPES
if (__glibc_likely (__have_fallocate >= 0)) int res = INTERNAL_SYSCALL_TYPES (fallocate, err, 4, int, fd,
# endif int, 0, off_t, offset,
{ off_t, len);
INTERNAL_SYSCALL_DECL (err); #else
# ifdef INTERNAL_SYSCALL_TYPES int res = INTERNAL_SYSCALL (fallocate, err, 4, fd, 0, offset, len);
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;
# 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 #endif
if (! INTERNAL_SYSCALL_ERROR_P (res, err))
return 0;
if (INTERNAL_SYSCALL_ERRNO (res, err) != EOPNOTSUPP)
return INTERNAL_SYSCALL_ERRNO (res, err);
return internal_fallocate (fd, offset, len); return internal_fallocate (fd, offset, len);
} }
weak_alias (posix_fallocate, posix_fallocate64) weak_alias (posix_fallocate, posix_fallocate64)