VOP_DEALLOCATE
—
zero and/or deallocate storage from a file
#include
<sys/param.h>
#include <sys/vnode.h>
int
VOP_DEALLOCATE
(struct vnode *vp,
off_t *offset, off_t *len,
int flags, int ioflag,
struct ucred *cred);
This VOP call zeroes/deallocates storage for an offset range in a
file. It is used to implement the
fspacectl(2)
system call.
Its arguments are:
- vp
- The vnode of the file.
- offset
- The start of the range to deallocate storage in the file.
- len
- The length of the range to deallocate storage in the file.
- flags
- The flags of this call. This should be set to 0 for now.
- ioflag
- Directives and hints to be given to the file system.
- cred
- The credentials of the caller.
*offset and *len are
updated to reflect the portion of the range that still needs to be
zeroed/deallocated on return. Partial result is considered a successful
operation. For a non-partial successful completion,
*len is updated to be the value 0, and
*offset is incremented by the number of bytes zeroed
before the end-of-file.
The vnode should be locked on entry and will still be locked on
exit.
Zero is returned if the call is successful, otherwise an
appropriate error code is returned.
- [
EINVAL
]
- Invalid offset, len or
flags parameters are passed into this VOP call.
- [
ENODEV
]
- The vnode type is not supported by this VOP call.
- [
ENOSPC
]
- The file system is full.
- [
EPERM
]
- An append-only flag is set on the file, but the caller is attempting to
zero before the current end of file.
VOP_DEALLOCATE
and this manual page was
written by Ka Ho Ng
<khng@FreeBSD.org>
under sponsorship from the FreeBSD Foundation.