1 .\" Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved 2 .\" Copyright (c) 2017, Joyent, Inc. 3 .\" The contents of this file are subject to the terms of the 4 .\" Common Development and Distribution License (the "License"). 5 .\" You may not use this file except in compliance with the License. 6 .\" 7 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 8 .\" or http://www.opensolaris.org/os/licensing. 9 .\" See the License for the specific language governing permissions 10 .\" and limitations under the License. 11 .\" 12 .\" When distributing Covered Code, include this CDDL HEADER in each 13 .\" file and include the License file at usr/src/OPENSOLARIS.LICENSE. 14 .\" If applicable, add the following below this CDDL HEADER, with the 15 .\" fields enclosed by brackets "[]" replaced with your own identifying 16 .\" information: Portions Copyright [yyyy] [name of copyright owner] 17 .Dd October 28, 2017 18 .Dt QUOTACTL 7I 19 .Os 20 .Sh NAME 21 .Nm quotactl 22 .Nd manipulate disk quotas 23 .Sh SYNOPSIS 24 .In sys/fs/ufs_quota.h 25 .Fn "int ioctl" "int fd" "Q_QUOTACTL" "struct quotctl *qp" 26 .Sh DESCRIPTION 27 This 28 .Fn ioctl 29 call manipulates disk quotas. 30 .Fa fd 31 is the file descriptor returned by the 32 .Xr open 2 33 system call after opening the 34 .Pa quotas 35 file (located in the root directory of the filesystem running quotas). 36 .Dv Q_QUOTACTL 37 is defined in 38 .Pa /usr/include/sys/fs/ufs_quota.h . 39 .Fa qp 40 is the address of the 41 .Vt quotctl 42 structure which is defined as 43 .Bd -literal -offset 2n 44 struct quotctl { 45 int op; 46 uid_t uid; 47 caddr_t addr; 48 }; 49 .Ed 50 .Pp 51 .Fa op 52 indicates an operation to be applied to the user 53 .Sy ID 54 .Fa uid . 55 .Po 56 See below. 57 .Pc 58 .Fa addr 59 is the address of an optional, command specific, data 60 structure which is copied in or out of the system. 61 The interpretation of 62 .Fa addr 63 is given with each value of 64 .Fa op 65 below. 66 .Bl -tag -width Q_GETQUOTA 67 .It Sy Q_QUOTAON 68 Turn on quotas for a file system. 69 .Fa addr 70 points to the full pathname of the 71 .Pa quotas 72 file. 73 .Fa uid 74 is ignored. 75 It is recommended that 76 .Fa uid 77 have the value of 78 .Sy 0 . 79 This call is restricted to the super-user. 80 .It Dv Q_QUOTAOFF 81 Turn off quotas for a file system. 82 .Fa addr 83 and 84 .Fa uid 85 are ignored. 86 It is 87 recommended that 88 .Fa addr 89 have the value of 90 .Sy NULL 91 and 92 .Fa uid 93 have the value of 94 .Sy 0 . 95 This call is restricted to the super-user. 96 .It Dv Q_GETQUOTA 97 Get disk quota limits and current usage for user 98 .Fa uid . 99 .Fa addr 100 is a pointer to a 101 .Vt dqblk 102 structure 103 .Po 104 defined in 105 .In sys/fs/ufs_quota.h 106 .Pc . 107 Only the super-user may get the quotas of a user other than himself. 108 .It Dv Q_SETQUOTA 109 Set disk quota limits and current usage for user 110 .Fa uid . 111 .Fa addr 112 is a pointer to a 113 .Vt dqblk 114 structure 115 .Po 116 defined in 117 .In sys/fs/ufs_quota.h 118 .Pc . 119 This call is restricted to the super-user. 120 .It Dv Q_SETQLIM 121 Set disk quota limits for user 122 .Fa uid . 123 .Fa addr 124 is a pointer to a 125 .Vt dqblk 126 structure 127 .Po 128 defined in 129 .In sys/fs/ufs_quota.h 130 .Pc . 131 This call is restricted to the super-user. 132 .It Dv Q_SYNC 133 Update the on-disk copy of quota usages for this file system. 134 .Fa addr 135 and 136 .Fa uid 137 are ignored. 138 .It Dv Q_ALLSYNC 139 Update the on-disk copy of quota usages for all file systems with active 140 quotas. 141 .Fa addr 142 and 143 .Fa uid 144 are ignored. 145 .El 146 .Sh RETURN VALUES 147 This 148 Fn ioctl 149 returns: 150 .Bl -tag -width xx 151 .It Sy 0 152 on success. 153 .It Sy \(mi1 154 on failure and sets 155 .Va errno 156 to indicate the error. 157 .El 158 .Sh FILES 159 .Bl -tag -width x 160 .It Pa /usr/include/sys/fs/ufs_quota.h 161 quota-related structure/function definitions and defines 162 .El 163 .Sh ERRORS 164 .Bl -tag -width EFAULT 165 .It Er EFAULT 166 .Fa addr 167 is invalid. 168 .It Er EINVAL 169 The kernel has not been compiled with the 170 .Sy QUOTA 171 option. 172 .Fa op 173 is invalid. 174 .It Er ENOENT 175 The 176 .Pa quotas 177 file specified by 178 .Fa addr 179 does not exist. 180 .It Er EPERM 181 The call is privileged and the calling process did not assert 182 .Brq Sy PRIV_SYS_MOUNT 183 in the effective set. 184 .It Er ESRCH 185 No disk quota is found for the indicated user. 186 Quotas have not been turned on for this file system. 187 .It Er EUSERS 188 The quota table is full. 189 .El 190 .Pp 191 If 192 .Fa op 193 is 194 .Dv Q_QUOTAON , 195 .Fn ioctl 196 may set 197 .Va errno 198 to: 199 .Bl -tag -width EACCES 200 .It Er EACCES 201 The quota file pointed to by 202 .Fa addr 203 exists but is not a regular file. 204 The quota file pointed to by 205 .Fa addr 206 exists but is not on the file system pointed to by 207 .Fa special . 208 .It Er EIO 209 Internal I/O error while attempting to read the 210 .Pa quotas 211 file pointed to by 212 .Fa addr . 213 .El 214 .Sh SEE ALSO 215 .Xr quota 1M , 216 .Xr quotacheck 1M , 217 .Xr quotaon 1M , 218 .Xr getrlimit 2 , 219 .Xr mount 2 220 .Sh BUGS 221 There should be some way to integrate this call with the resource limit 222 interface provided by 223 .Xr setrlimit 2 224 and 225 .Xr getrlimit 2 . 226 .Pp 227 This call is incompatible with Melbourne quotas.