 f14fb60209
			
		
	
	
		f14fb60209
		
	
	
	
	
		
			
			* Updating common/lib * Updating lib/csu * Updating lib/libc * Updating libexec/ld.elf_so * Corrected test on __minix in featuretest to actually follow the meaning of the comment. * Cleaned up _REENTRANT-related defintions. * Disabled -D_REENTRANT for libfetch * Removing some unneeded __NBSD_LIBC defines and tests Change-Id: Ic1394baef74d11b9f86b312f5ff4bbc3cbf72ce2
		
			
				
	
	
		
			356 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			356 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\"	$NetBSD: __quotactl.2,v 1.3 2012/02/13 19:50:15 dholland Exp $
 | |
| .\"
 | |
| .\" Copyright (c) 1983, 1990, 1991, 1993
 | |
| .\"	The Regents of the University of California.  All rights reserved.
 | |
| .\"
 | |
| .\" This code is derived from software contributed to Berkeley by
 | |
| .\" Robert Elz at The University of Melbourne.
 | |
| .\"
 | |
| .\" 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.
 | |
| .\" 3. Neither the name of the University nor the names of its contributors
 | |
| .\"    may be used to endorse or promote products derived from this software
 | |
| .\"    without specific prior written permission.
 | |
| .\"
 | |
| .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
 | |
| .\"
 | |
| .\"	@(#)quotactl.2	8.2 (Berkeley) 3/10/95
 | |
| .\"
 | |
| .Dd February 11, 2012
 | |
| .Dt __QUOTACTL 2
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm __quotactl
 | |
| .Nd manipulate file system quotas
 | |
| .Sh LIBRARY
 | |
| .Lb libc
 | |
| .Sh SYNOPSIS
 | |
| .In sys/quota.h
 | |
| .In sys/quotactl.h
 | |
| .Ft int
 | |
| .Fn __quotactl "const char *path" "struct quotactl_args *args"
 | |
| .Sh DESCRIPTION
 | |
| The
 | |
| .Fn __quotactl
 | |
| call manipulates file system quotas.
 | |
| This is an internal interface and is documented for reference purposes
 | |
| only.
 | |
| All application and utility code should use the
 | |
| .Xr libquota 3
 | |
| interface.
 | |
| .Pp
 | |
| The
 | |
| .Fn __quotactl
 | |
| function performs one of several quota-related operations on the file
 | |
| system named by
 | |
| .Fa path .
 | |
| The operation and arguments to that operation are passed in the
 | |
| .Fa args
 | |
| argument.
 | |
| The operation is stored in the
 | |
| .Fa qc_op
 | |
| member of
 | |
| .Fa args .
 | |
| The arguments are placed in a union such that the first and second
 | |
| arguments of the operation
 | |
| .Dv QUOTACTL_EXAMPLE
 | |
| are found as the members
 | |
| .Fa u.example.qc_arg1
 | |
| and
 | |
| .Fa u.example.qc_arg2 .
 | |
| The descriptions below will refer to the operations as functions of
 | |
| the form
 | |
| .Fn QUOTACTL_EXAMPLE "int arg1" "int arg2"
 | |
| and elide the encoding of these arguments into the
 | |
| .Fa args
 | |
| structure.
 | |
| Explicit mention of the
 | |
| .Fa path
 | |
| argument is also omitted.
 | |
| .Pp
 | |
| There are fourteen quota control operations.
 | |
| These are:
 | |
| .Bl -tag -width abcdef
 | |
| .\" ************************************************************
 | |
| .It Fn QUOTACTL_STAT "struct quotastat *info"
 | |
| Information about the quota implementation on the selected volume is
 | |
| returned in
 | |
| .Fa info .
 | |
| The
 | |
| .Dv quotastat
 | |
| structure contains the following members:
 | |
| .Bl -tag -width qs_restrictions
 | |
| .It qs_implname
 | |
| A human-readable string describing the underlying implementation of
 | |
| quotas.
 | |
| This is suitable for display to users
 | |
| .Pq and system administrators
 | |
| but should not be interpreted by software.
 | |
| See
 | |
| .Xr quota_getimplname 3 .
 | |
| .It qs_numidtypes
 | |
| The number of ID types supported by this implementation.
 | |
| See
 | |
| .Xr quota_getnumidtypes 3 .
 | |
| .It qs_numobjtypes
 | |
| The number of object types supported by this implementation.
 | |
| See
 | |
| .Xr quota_getnumobjtypes 3 .
 | |
| .It qs_restrictions
 | |
| Flags identifying specific semantic limitations of the implementation.
 | |
| See
 | |
| .Xr quota_getrestrictions 3 .
 | |
| .El
 | |
| .\" ************************************************************
 | |
| .It Fn QUOTACTL_IDTYPESTAT "int idtype" "struct quotaidtypestat *info"
 | |
| Information about a particular ID type on the selected volume is
 | |
| returned in
 | |
| .Fa info .
 | |
| The
 | |
| .Dv quotaidtypestat
 | |
| structure contains the following members:
 | |
| .Bl -tag -width qs_restrictions
 | |
| .It qis_name
 | |
| The name of the ID type.
 | |
| See
 | |
| .Xr quota_idtype_getname 3 .
 | |
| .El
 | |
| .\" ************************************************************
 | |
| .It Fn QUOTACTL_OBJYPESTAT "int objtype" "struct quotaobjtypestat *info"
 | |
| Information about a particular object type on the selected volume is
 | |
| returned in
 | |
| .Fa info .
 | |
| The
 | |
| .Dv quotaobjtypestat
 | |
| structure contains the following members:
 | |
| .Bl -tag -width qs_restrictions
 | |
| .It qos_name
 | |
| The name of the object type.
 | |
| See
 | |
| .Xr quota_objtype_getname 3 .
 | |
| .It qos_isbytes
 | |
| A flag that is nonzero if the object type is something measured in
 | |
| bytes.
 | |
| See
 | |
| .Xr quota_objtype_isbytes 3 .
 | |
| .El
 | |
| .\" ************************************************************
 | |
| .It Fn QUOTACTL_GET "const struct quotakey *key" "struct quotaval *val"
 | |
| Return in
 | |
| .Fa val
 | |
| the quota information selected by
 | |
| .Fa key .
 | |
| See
 | |
| .Xr quota_get 3 .
 | |
| .\" ************************************************************
 | |
| .It Fn QUOTACTL_PUT "const struct quotakey *key" "const struct quotaval *val"
 | |
| The quota information selected by
 | |
| .Fa key
 | |
| is updated to the values provided in
 | |
| .Fa val .
 | |
| Note that the current usage information, which is file system
 | |
| meta-data, cannot be updated via this interface.
 | |
| If the usage information is incorrect a tool such as
 | |
| .Xr fsck 8
 | |
| or
 | |
| .Xr quotacheck 8
 | |
| with file-system-specific knowledge must be used to repair the
 | |
| on-disk information.
 | |
| See
 | |
| .Xr quota_put 3 .
 | |
| .\" ************************************************************
 | |
| .It Fn QUOTACTL_DELETE "const struct quotakey *key"
 | |
| The quota information selected by
 | |
| .Fa key
 | |
| is removed.
 | |
| See
 | |
| .Xr quota_delete 3 .
 | |
| .\" ************************************************************
 | |
| .It Fn QUOTACTL_CURSOROPEN "struct quotakcursor *cursor"
 | |
| A cursor for iterating the quota information is created.
 | |
| The
 | |
| .Dv quotakcursor
 | |
| structure is a semi-opaque type holding the iteration state used by
 | |
| the quota implementation.
 | |
| The caller is responsible for allocating and maintaining storage for
 | |
| the cursor.
 | |
| Every cursor that is opened should be closed.
 | |
| It is not specified whether a cursor remains valid if
 | |
| .Xr memcpy 3
 | |
| is used to move it to a different location in user memory.
 | |
| It is not specified whether or how a cursor may be duplicated.
 | |
| Passing an uninitialized, corrupted, or closed cursor to operations
 | |
| other than
 | |
| .Fn QUOTACTL_CURSOROPEN
 | |
| will produce unspecified behavior.
 | |
| As per general standards for system calls such actions must not
 | |
| produce undefined or materially adverse behavior in the kernel;
 | |
| however, the effect on a user process may be arbitrary.
 | |
| The
 | |
| .Xr libquota 3
 | |
| interface wraps the system call level quota cursors in a friendlier
 | |
| interface.
 | |
| See
 | |
| .Xr quota_opencursor 3 .
 | |
| .\" ************************************************************
 | |
| .It Fn QUOTACTL_CURSORCLOSE "struct quotakcursor *cursor"
 | |
| The cursor passed in is closed.
 | |
| See
 | |
| .Xr quotacursor_close 3 .
 | |
| .\" ************************************************************
 | |
| .It Fn QUOTACTL_CURSORSKIPIDTYPE "struct quotakcursor *cursor" "int idtype"
 | |
| This operation provides a hint that iteration can skip over a
 | |
| particular ID type.
 | |
| The implementation is not obliged to honor the hint.
 | |
| See
 | |
| .Xr quotacursor_skipidtype 3 .
 | |
| .\" ************************************************************
 | |
| .It Fn QUOTACTL_CURSORGET "struct quotakcursor *cursor" "struct quotakey *keys" "struct quotaval *vals" "unsigned maxnum" "unsigned *ret"
 | |
| This operation retrieves data at the current cursor position and
 | |
| advances it.
 | |
| Up to
 | |
| .Fa maxnum
 | |
| quota records are retrieved and stored into the arrays named by
 | |
| .Fa keys
 | |
| and
 | |
| .Fa vals .
 | |
| The number of records retrieved is stored into the variable pointed to
 | |
| by
 | |
| .Fa ret .
 | |
| See
 | |
| .Xr quotacursor_get 3
 | |
| and
 | |
| .Xr quotacursor_getn 3 .
 | |
| .\" ************************************************************
 | |
| .It Fn QUOTACTL_CURSORATEND "struct quotakcursor *cursor" "int *ret"
 | |
| This operation generates a nonzero value if the cursor has reached the
 | |
| end of the available quota information and zero otherwise.
 | |
| The generated value is stored into the variable pointed to by
 | |
| .Fa ret .
 | |
| See
 | |
| .Xr quotacursor_atend 3 .
 | |
| .\" ************************************************************
 | |
| .It Fn QUOTACTL_CURSORREWIND "struct quotakcursor *cursor"
 | |
| This operation updates the cursor state so that further calls to
 | |
| .Fn QUOTACTL_CURSORGET
 | |
| will begin again at the start of the iteration.
 | |
| See
 | |
| .Xr quotacursor_rewind 3 .
 | |
| .\" ************************************************************
 | |
| .It Fn QUOTACTL_QUOTAON "int idtype" "const char *quotafile"
 | |
| This operation is accepted only by old-style
 | |
| .Pq Dq quota1
 | |
| quota implementations.
 | |
| Quotas for the ID type named by
 | |
| .Fa idtype
 | |
| are switched on, and the file
 | |
| .Fa quotafile
 | |
| is used to hold the quota information.
 | |
| This operation can also be used when quotas are already switched on
 | |
| to change the file used to hold the quota information.
 | |
| Note however that as the current usage information in the file must be
 | |
| consistent with the current state of the file system, in general it is
 | |
| not safe to call
 | |
| .Fn QUOTACTL_QUOTAON
 | |
| except in single-user mode.
 | |
| See
 | |
| .Xr quotaon 8
 | |
| for more information.
 | |
| Normally
 | |
| quotaon 8
 | |
| is run during the boot sequence after
 | |
| quotacheck 8 .
 | |
| Also see
 | |
| .Xr quota_quotaon 3 .
 | |
| .\" ************************************************************
 | |
| .It Fn QUOTACTL_QUOTAOFF "int idtype"
 | |
| This operation is accepted only by old-style
 | |
| .Pq Dq quota1
 | |
| quota implementations.
 | |
| Quotas for the ID type named by
 | |
| .Fa idtype
 | |
| are switched off.
 | |
| Once quotas are switched off the file system behaves as if no quotas
 | |
| are present.
 | |
| Normally
 | |
| quotaoff 8
 | |
| is run during the shutdown sequence.
 | |
| Also see
 | |
| .Xr quota_quotaoff 3 .
 | |
| .\" ************************************************************
 | |
| .El
 | |
| .Sh RETURN VALUES
 | |
| On success,
 | |
| .Fn __quotactl
 | |
| returns 0.
 | |
| Otherwise the value \-1 is returned and an error code reflecting the
 | |
| reason for the failure is placed in
 | |
| .Va errno .
 | |
| .Sh ERRORS
 | |
| .Fn __quotactl
 | |
| failures include:
 | |
| .Bl -tag -width Er
 | |
| .It Bq Er EFAULT
 | |
| A pointer points outside the process's allocated address space.
 | |
| .It Bq Er EINVAL
 | |
| The operation code was out of range; or
 | |
| a requested ID or object type was out of range; or
 | |
| a corrupted or invalid cursor was passed in.
 | |
| .It Bq Er ENODEV
 | |
| The requested action was inappropriate for
 | |
| .Pq or not supported by
 | |
| the selected volume.
 | |
| .It Bq Er ENOENT
 | |
| No quota information exists for the requested key.
 | |
| .It Bq Er ENOMEM
 | |
| Memory could not be allocated within the kernel.
 | |
| .It Bq Er ENXIO
 | |
| The target file system type is capable of supporting quotas, but
 | |
| quotas are not enabled on the selected volume.
 | |
| .It Bq Er EOPNOTSUPP
 | |
| The target file system does not support quotas.
 | |
| .El
 | |
| .Sh SEE ALSO
 | |
| .Xr quota 1 ,
 | |
| .Xr libquota 3 ,
 | |
| .Xr fstab 5 ,
 | |
| .Xr edquota 8 ,
 | |
| .Xr quotacheck 8 ,
 | |
| .Xr quotaon 8 ,
 | |
| .Xr quotarestore 8 ,
 | |
| .Xr repquota 8
 | |
| .Sh HISTORY
 | |
| The original
 | |
| .Fn quotactl
 | |
| function call appeared in
 | |
| .Bx 4.3 Reno .
 | |
| The current
 | |
| .Fn __quotactl
 | |
| interface appeared in
 | |
| .Nx 6.0 .
 | |
| .Sh BUGS
 | |
| As of this writing the error returns that occur in practice are not
 | |
| always completely consistent with the intent documented above.
 | |
| .Pp
 | |
| There should be some way to integrate this call with the resource
 | |
| limit interface provided by
 | |
| .Xr setrlimit 2
 | |
| and
 | |
| .Xr getrlimit 2 .
 |