diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:15 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:15 -0400 |
| commit | 253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch) | |
| tree | adf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man2/fdiscard.2 | |
| parent | a9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff) | |
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man2/fdiscard.2')
| -rw-r--r-- | static/netbsd/man2/fdiscard.2 | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/static/netbsd/man2/fdiscard.2 b/static/netbsd/man2/fdiscard.2 new file mode 100644 index 00000000..8e2c558c --- /dev/null +++ b/static/netbsd/man2/fdiscard.2 @@ -0,0 +1,173 @@ +.\" $NetBSD: fdiscard.2,v 1.5 2016/06/30 18:43:43 wiz Exp $ +.\" +.\" Copyright (c) 2014 The NetBSD Foundation, Inc. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to The NetBSD Foundation +.\" by David A. Holland. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +.\" POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd June 30, 2016 +.Dt FDISCARD 2 +.Os +.Sh NAME +.Nm posix_fallocate , +.Nm fdiscard +.Nd allocate or discard backing store for files +.Sh LIBRARY +.Lb libc +.Sh SYNOPSIS +.In fcntl.h +.Ft int +.Fn posix_fallocate "int fd" "off_t pos" "off_t length" +.In unistd.h +.Ft int +.Fn fdiscard "int fd" "off_t pos" "off_t length" +.Sh DESCRIPTION +The +.Fn posix_fallocate +call allocates backing store for the file referenced by +.Fa fd +in the region starting at +.Fa pos +bytes from the start of the file and continuing for +.Fa length +bytes more. +If the region extends past the current end of file, the file size is +increased to cover the region. +.Pp +The +.Fn fdiscard +call discards backing store for the file referenced by +.Fa fd +in the region starting at +.Fa pos +bytes from the start of the file and continuing for +.Fa length +bytes more. +The file size is not affected. +.Pp +Both calls operate on the basis of file system blocks, so +.Fn posix_fallocate +may allocate more physical space than requested and +.Fn fdiscard +may discard less physical space than requested. +.Pp +When +.Fn posix_fallocate +is applied to an unallocated region in a regular file (a +.Dq hole ) , +the hole is filled and the visible contents are unaffected; both holes +and newly allocated regions read as all zeros. +If +.Fn posix_fallocate +is applied to an already-allocated region in a regular file, +it has no effect. +.Pp +When +.Fn fdiscard +is applied to a regular file, a hole is created and any data in the +affected region is thrown away. +Subsequent reads of the region return zeros. +.Pp +If +.Fn fdiscard +is applied to a device, and the device supports an underlying discard +operation, that operation is invoked. +For example, ATA flash devices and solid-state disks support an +operation called TRIM that discards blocks at the device level. +The behavior of blocks discarded at this level is +implementation-defined; as devices vary, specific behavior should not +be relied upon. +Subsequent reads of the same block may return zeros; such reads may +also, however, continue to return the previously written data, or +return other data, or return indeterminate garbage; or may switch +between any of these behaviors at unpredictable points later on. +.Pp +For both calls, the file +.Fa fd +must be open for writing and may not be a directory or socket. +.Sh RESTRICTIONS +Because there is no way for +.Fn posix_fallocate +to report a partial failure, errors may require some or all of the +work it has already done to be unwound, which may be expensive. +It is recommended to set the file length first with +.Xr ftruncate 2 +and only then allocate space within the file using +.Fn posix_fallocate . +.Pp +Depending on the implementation, even a failing call to +.Fn posix_fallocate +may allocate some space to the target file. +Such a call will not, however, change the file size. +.Pp +Furthermore, in some implementations, the space reservations created +by +.Fn posix_fallocate +may not be persistent after a crash or reboot if the space reserved +has not yet been written to. +.Sh RETURN VALUES +If successful, the +.Fn posix_fallocate +function will return zero. +Otherwise an error number will be returned, without setting +.Va errno . +.Pp +If successful, the +.Fn fdiscard +function will return zero. +Otherwise the value \-1 is returned and the global variable +.Va errno +is set to indicate the error. +.Sh ERRORS +.Bl -tag -width Er +.It Bq Er EBADF +The file handle +.Fa fd +is invalid or not open for writing. +.It Bq Er EDQUOT +Allocating the requested blocks would exceed the user's quota. +.It Bq Er EINVAL +The position and/or length values are negative. +.It Bq Er EIO +A hardware-level I/O error occurred. +.It Bq Er EISDIR +The selected file is a directory. +.It Bq Er ENOSPC +There was no space in the file system to complete the operation. +.El +.Sh SEE ALSO +.Xr ftruncate 2 +.Sh HISTORY +The +.Fn posix_fallocate +and +.Fn fdiscard +function calls appeared in +.Nx 7.0 . +Similar functions appeared previously in Linux. +The +.Fn posix_fallocate +function is expected to conform to +.St -p1003.1-2004 . |
