2022-01-01 18:54:23 +00:00
|
|
|
/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
|
update.
2000-04-14 Ulrich Drepper <drepper@redhat.com>
* include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64.
* sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
* sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
* io/Makefile (routines): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/fcntl.h: Declare posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* sysdeps/generic/fadvise.c: New file.
* sysdeps/generic/fadvise64.c: New file.
* sysdeps/generic/fallocate.c: New file.
* sysdeps/generic/fallocate64.c: New file.
* sysdeps/posix/fallocate.c: New file.
* sysdeps/posix/fallocate64.c: New file.
* sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL,
POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED,
POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE.
* sysdeps/mach/hurd/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
* sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise.
* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
2000-04-14 07:51:02 +00:00
|
|
|
This file is part of the GNU C Library.
|
|
|
|
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
2001-07-06 04:58:11 +00:00
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2.1 of the License, or (at your option) any later version.
|
update.
2000-04-14 Ulrich Drepper <drepper@redhat.com>
* include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64.
* sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
* sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
* io/Makefile (routines): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/fcntl.h: Declare posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* sysdeps/generic/fadvise.c: New file.
* sysdeps/generic/fadvise64.c: New file.
* sysdeps/generic/fallocate.c: New file.
* sysdeps/generic/fallocate64.c: New file.
* sysdeps/posix/fallocate.c: New file.
* sysdeps/posix/fallocate64.c: New file.
* sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL,
POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED,
POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE.
* sysdeps/mach/hurd/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
* sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise.
* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
2000-04-14 07:51:02 +00:00
|
|
|
|
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
2001-07-06 04:58:11 +00:00
|
|
|
Lesser General Public License for more details.
|
update.
2000-04-14 Ulrich Drepper <drepper@redhat.com>
* include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64.
* sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
* sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
* io/Makefile (routines): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/fcntl.h: Declare posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* sysdeps/generic/fadvise.c: New file.
* sysdeps/generic/fadvise64.c: New file.
* sysdeps/generic/fallocate.c: New file.
* sysdeps/generic/fallocate64.c: New file.
* sysdeps/posix/fallocate.c: New file.
* sysdeps/posix/fallocate64.c: New file.
* sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL,
POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED,
POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE.
* sysdeps/mach/hurd/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
* sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise.
* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
2000-04-14 07:51:02 +00:00
|
|
|
|
2001-07-06 04:58:11 +00:00
|
|
|
You should have received a copy of the GNU Lesser General Public
|
2012-02-09 23:18:22 +00:00
|
|
|
License along with the GNU C Library; if not, see
|
Prefer https to http for gnu.org and fsf.org URLs
Also, change sources.redhat.com to sourceware.org.
This patch was automatically generated by running the following shell
script, which uses GNU sed, and which avoids modifying files imported
from upstream:
sed -ri '
s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g
s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g
' \
$(find $(git ls-files) -prune -type f \
! -name '*.po' \
! -name 'ChangeLog*' \
! -path COPYING ! -path COPYING.LIB \
! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \
! -path manual/texinfo.tex ! -path scripts/config.guess \
! -path scripts/config.sub ! -path scripts/install-sh \
! -path scripts/mkinstalldirs ! -path scripts/move-if-change \
! -path INSTALL ! -path locale/programs/charmap-kw.h \
! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \
! '(' -name configure \
-execdir test -f configure.ac -o -f configure.in ';' ')' \
! '(' -name preconfigure \
-execdir test -f preconfigure.ac ';' ')' \
-print)
and then by running 'make dist-prepare' to regenerate files built
from the altered files, and then executing the following to cleanup:
chmod a+x sysdeps/unix/sysv/linux/riscv/configure
# Omit irrelevant whitespace and comment-only changes,
# perhaps from a slightly-different Autoconf version.
git checkout -f \
sysdeps/csky/configure \
sysdeps/hppa/configure \
sysdeps/riscv/configure \
sysdeps/unix/sysv/linux/csky/configure
# Omit changes that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines
git checkout -f \
sysdeps/powerpc/powerpc64/ppc-mcount.S \
sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
# Omit change that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline
git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 05:40:42 +00:00
|
|
|
<https://www.gnu.org/licenses/>. */
|
update.
2000-04-14 Ulrich Drepper <drepper@redhat.com>
* include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64.
* sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
* sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
* io/Makefile (routines): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/fcntl.h: Declare posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* sysdeps/generic/fadvise.c: New file.
* sysdeps/generic/fadvise64.c: New file.
* sysdeps/generic/fallocate.c: New file.
* sysdeps/generic/fallocate64.c: New file.
* sysdeps/posix/fallocate.c: New file.
* sysdeps/posix/fallocate64.c: New file.
* sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL,
POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED,
POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE.
* sysdeps/mach/hurd/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
* sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise.
* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
2000-04-14 07:51:02 +00:00
|
|
|
|
|
|
|
#include <errno.h>
|
|
|
|
#include <fcntl.h>
|
|
|
|
#include <unistd.h>
|
2015-06-05 08:50:38 +00:00
|
|
|
#include <stdint.h>
|
|
|
|
#include <sys/fcntl.h>
|
update.
2000-04-14 Ulrich Drepper <drepper@redhat.com>
* include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64.
* sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
* sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
* io/Makefile (routines): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/fcntl.h: Declare posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* sysdeps/generic/fadvise.c: New file.
* sysdeps/generic/fadvise64.c: New file.
* sysdeps/generic/fallocate.c: New file.
* sysdeps/generic/fallocate64.c: New file.
* sysdeps/posix/fallocate.c: New file.
* sysdeps/posix/fallocate64.c: New file.
* sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL,
POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED,
POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE.
* sysdeps/mach/hurd/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
* sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise.
* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
2000-04-14 07:51:02 +00:00
|
|
|
#include <sys/stat.h>
|
|
|
|
#include <sys/statfs.h>
|
|
|
|
|
2015-06-05 08:50:38 +00:00
|
|
|
/* Reserve storage for the data of the file associated with FD. This
|
|
|
|
emulation is far from perfect, but the kernel cannot do not much
|
|
|
|
better for network file systems, either. */
|
update.
2000-04-14 Ulrich Drepper <drepper@redhat.com>
* include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64.
* sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
* sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
* io/Makefile (routines): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/fcntl.h: Declare posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* sysdeps/generic/fadvise.c: New file.
* sysdeps/generic/fadvise64.c: New file.
* sysdeps/generic/fallocate.c: New file.
* sysdeps/generic/fallocate64.c: New file.
* sysdeps/posix/fallocate.c: New file.
* sysdeps/posix/fallocate64.c: New file.
* sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL,
POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED,
POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE.
* sysdeps/mach/hurd/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
* sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise.
* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
2000-04-14 07:51:02 +00:00
|
|
|
|
|
|
|
int
|
2003-08-22 18:11:32 +00:00
|
|
|
__posix_fallocate64_l64 (int fd, __off64_t offset, __off64_t len)
|
update.
2000-04-14 Ulrich Drepper <drepper@redhat.com>
* include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64.
* sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
* sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
* io/Makefile (routines): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/fcntl.h: Declare posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* sysdeps/generic/fadvise.c: New file.
* sysdeps/generic/fadvise64.c: New file.
* sysdeps/generic/fallocate.c: New file.
* sysdeps/generic/fallocate64.c: New file.
* sysdeps/posix/fallocate.c: New file.
* sysdeps/posix/fallocate64.c: New file.
* sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL,
POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED,
POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE.
* sysdeps/mach/hurd/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
* sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise.
* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
2000-04-14 07:51:02 +00:00
|
|
|
{
|
2022-05-31 15:17:20 +00:00
|
|
|
struct __stat64_t64 st;
|
update.
2000-04-14 Ulrich Drepper <drepper@redhat.com>
* include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64.
* sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
* sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
* io/Makefile (routines): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/fcntl.h: Declare posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* sysdeps/generic/fadvise.c: New file.
* sysdeps/generic/fadvise64.c: New file.
* sysdeps/generic/fallocate.c: New file.
* sysdeps/generic/fallocate64.c: New file.
* sysdeps/posix/fallocate.c: New file.
* sysdeps/posix/fallocate64.c: New file.
* sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL,
POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED,
POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE.
* sysdeps/mach/hurd/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
* sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise.
* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
2000-04-14 07:51:02 +00:00
|
|
|
|
2003-08-22 18:11:32 +00:00
|
|
|
if (offset < 0 || len < 0)
|
update.
2000-04-14 Ulrich Drepper <drepper@redhat.com>
* include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64.
* sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
* sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
* io/Makefile (routines): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/fcntl.h: Declare posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* sysdeps/generic/fadvise.c: New file.
* sysdeps/generic/fadvise64.c: New file.
* sysdeps/generic/fallocate.c: New file.
* sysdeps/generic/fallocate64.c: New file.
* sysdeps/posix/fallocate.c: New file.
* sysdeps/posix/fallocate64.c: New file.
* sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL,
POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED,
POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE.
* sysdeps/mach/hurd/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
* sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise.
* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
2000-04-14 07:51:02 +00:00
|
|
|
return EINVAL;
|
2015-06-05 08:50:38 +00:00
|
|
|
|
|
|
|
/* Perform overflow check. The outer cast relies on a GCC
|
|
|
|
extension. */
|
2015-08-26 06:42:01 +00:00
|
|
|
if ((__off64_t) ((uint64_t) offset + (uint64_t) len) < 0)
|
update.
2000-04-14 Ulrich Drepper <drepper@redhat.com>
* include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64.
* sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
* sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
* io/Makefile (routines): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/fcntl.h: Declare posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* sysdeps/generic/fadvise.c: New file.
* sysdeps/generic/fadvise64.c: New file.
* sysdeps/generic/fallocate.c: New file.
* sysdeps/generic/fallocate64.c: New file.
* sysdeps/posix/fallocate.c: New file.
* sysdeps/posix/fallocate64.c: New file.
* sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL,
POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED,
POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE.
* sysdeps/mach/hurd/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
* sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise.
* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
2000-04-14 07:51:02 +00:00
|
|
|
return EFBIG;
|
|
|
|
|
2015-06-05 08:50:38 +00:00
|
|
|
/* pwrite64 below will not do the right thing in O_APPEND mode. */
|
|
|
|
{
|
|
|
|
int flags = __fcntl (fd, F_GETFL, 0);
|
|
|
|
if (flags < 0 || (flags & O_APPEND) != 0)
|
|
|
|
return EBADF;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* We have to make sure that this is really a regular file. */
|
2022-05-31 15:17:20 +00:00
|
|
|
if (__fstat64_time64 (fd, &st) != 0)
|
update.
2000-04-14 Ulrich Drepper <drepper@redhat.com>
* include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64.
* sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
* sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
* io/Makefile (routines): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/fcntl.h: Declare posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* sysdeps/generic/fadvise.c: New file.
* sysdeps/generic/fadvise64.c: New file.
* sysdeps/generic/fallocate.c: New file.
* sysdeps/generic/fallocate64.c: New file.
* sysdeps/posix/fallocate.c: New file.
* sysdeps/posix/fallocate64.c: New file.
* sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL,
POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED,
POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE.
* sysdeps/mach/hurd/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
* sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise.
* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
2000-04-14 07:51:02 +00:00
|
|
|
return EBADF;
|
|
|
|
if (S_ISFIFO (st.st_mode))
|
|
|
|
return ESPIPE;
|
|
|
|
if (! S_ISREG (st.st_mode))
|
|
|
|
return ENODEV;
|
|
|
|
|
2005-05-03 15:07:47 +00:00
|
|
|
if (len == 0)
|
|
|
|
{
|
2015-06-05 08:50:38 +00:00
|
|
|
/* This is racy, but there is no good way to satisfy a
|
|
|
|
zero-length allocation request. */
|
2005-05-03 15:07:47 +00:00
|
|
|
if (st.st_size < offset)
|
|
|
|
{
|
|
|
|
int ret = __ftruncate64 (fd, offset);
|
|
|
|
|
|
|
|
if (ret != 0)
|
|
|
|
ret = errno;
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2015-06-05 08:50:38 +00:00
|
|
|
/* Minimize data transfer for network file systems, by issuing
|
|
|
|
single-byte write requests spaced by the file system block size.
|
|
|
|
(Most local file systems have fallocate support, so this fallback
|
|
|
|
code is not used there.) */
|
|
|
|
|
|
|
|
unsigned increment;
|
|
|
|
{
|
|
|
|
struct statfs64 f;
|
|
|
|
|
|
|
|
if (__fstatfs64 (fd, &f) != 0)
|
|
|
|
return errno;
|
|
|
|
if (f.f_bsize == 0)
|
|
|
|
increment = 512;
|
|
|
|
else if (f.f_bsize < 4096)
|
|
|
|
increment = f.f_bsize;
|
|
|
|
else
|
|
|
|
/* NFS clients do not propagate the block size of the underlying
|
|
|
|
storage and may report a much larger value which would still
|
|
|
|
leave holes after the loop below, so we cap the increment at
|
|
|
|
4096. */
|
|
|
|
increment = 4096;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Write a null byte to every block. This is racy; we currently
|
|
|
|
lack a better option. Compare-and-swap against a file mapping
|
|
|
|
might address local races, but requires interposition of a signal
|
|
|
|
handler to catch SIGBUS. */
|
|
|
|
for (offset += (len - 1) % increment; len > 0; offset += increment)
|
update.
2000-04-14 Ulrich Drepper <drepper@redhat.com>
* include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64.
* sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
* sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
* io/Makefile (routines): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/fcntl.h: Declare posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* sysdeps/generic/fadvise.c: New file.
* sysdeps/generic/fadvise64.c: New file.
* sysdeps/generic/fallocate.c: New file.
* sysdeps/generic/fallocate64.c: New file.
* sysdeps/posix/fallocate.c: New file.
* sysdeps/posix/fallocate64.c: New file.
* sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL,
POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED,
POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE.
* sysdeps/mach/hurd/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
* sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise.
* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
2000-04-14 07:51:02 +00:00
|
|
|
{
|
2015-06-05 08:50:38 +00:00
|
|
|
len -= increment;
|
2005-05-03 15:07:47 +00:00
|
|
|
|
|
|
|
if (offset < st.st_size)
|
|
|
|
{
|
|
|
|
unsigned char c;
|
2005-06-14 15:55:44 +00:00
|
|
|
ssize_t rsize = __libc_pread64 (fd, &c, 1, offset);
|
2005-05-03 15:07:47 +00:00
|
|
|
|
|
|
|
if (rsize < 0)
|
|
|
|
return errno;
|
|
|
|
/* If there is a non-zero byte, the block must have been
|
|
|
|
allocated already. */
|
|
|
|
else if (rsize == 1 && c != 0)
|
|
|
|
continue;
|
|
|
|
}
|
2004-12-22 20:10:10 +00:00
|
|
|
|
2005-06-14 15:55:44 +00:00
|
|
|
if (__libc_pwrite64 (fd, "", 1, offset) != 1)
|
update.
2000-04-14 Ulrich Drepper <drepper@redhat.com>
* include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64.
* sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
* sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64.
Make old name weak alias.
* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
* io/Makefile (routines): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* io/fcntl.h: Declare posix_fadvise, posix_fadvise64,
posix_fallocate, and posix_fallocate64.
* sysdeps/generic/fadvise.c: New file.
* sysdeps/generic/fadvise64.c: New file.
* sysdeps/generic/fallocate.c: New file.
* sysdeps/generic/fallocate64.c: New file.
* sysdeps/posix/fallocate.c: New file.
* sysdeps/posix/fallocate64.c: New file.
* sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL,
POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED,
POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE.
* sysdeps/mach/hurd/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
* sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise.
* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
2000-04-14 07:51:02 +00:00
|
|
|
return errno;
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
2003-08-22 18:11:32 +00:00
|
|
|
|
2007-07-28 18:13:45 +00:00
|
|
|
#undef __posix_fallocate64_l64
|
2003-08-22 18:11:32 +00:00
|
|
|
#include <shlib-compat.h>
|
|
|
|
#include <bits/wordsize.h>
|
|
|
|
|
|
|
|
#if __WORDSIZE == 32 && SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)
|
|
|
|
|
|
|
|
int
|
2004-03-10 09:29:17 +00:00
|
|
|
attribute_compat_text_section
|
2003-08-22 18:11:32 +00:00
|
|
|
__posix_fallocate64_l32 (int fd, off64_t offset, size_t len)
|
|
|
|
{
|
|
|
|
return __posix_fallocate64_l64 (fd, offset, len);
|
|
|
|
}
|
|
|
|
|
|
|
|
versioned_symbol (libc, __posix_fallocate64_l64, posix_fallocate64,
|
|
|
|
GLIBC_2_3_3);
|
|
|
|
compat_symbol (libc, __posix_fallocate64_l32, posix_fallocate64, GLIBC_2_2);
|
|
|
|
#else
|
|
|
|
strong_alias (__posix_fallocate64_l64, posix_fallocate64);
|
|
|
|
#endif
|