| # Copyright 2023 syzkaller project authors. All rights reserved. |
| # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. |
| |
| include <uapi/linux/quota.h> |
| |
| quotactl$Q_SYNC(cmd flags[quota_cmd_sync], special const[0], id const[0], addr const[0]) |
| quotactl$Q_QUOTAON(cmd flags[quota_cmd_quota_on], special ptr[in, blockdev_filename], id uid, addr ptr[in, filename]) |
| quotactl$Q_QUOTAOFF(cmd flags[quota_cmd_quota_off], special ptr[in, blockdev_filename], id uid, addr const[0]) |
| quotactl$Q_GETFMT(cmd flags[quota_cmd_getfmt], special ptr[in, blockdev_filename], id uid, addr ptr[out, int32]) |
| quotactl$Q_GETINFO(cmd flags[quota_cmd_getinfo], special ptr[in, blockdev_filename], id uid, addr ptr[out, if_dqinfo]) |
| quotactl$Q_SETINFO(cmd flags[quota_cmd_setinfo], special ptr[in, blockdev_filename], id uid, addr ptr[in, if_dqinfo]) |
| quotactl$Q_GETQUOTA(cmd flags[quota_cmd_getquota], special ptr[in, blockdev_filename], id uid, addr ptr[out, if_dqblk]) |
| quotactl$Q_SETQUOTA(cmd flags[quota_cmd_setquota], special ptr[in, blockdev_filename], id uid, addr ptr[in, if_dqblk]) |
| quotactl$Q_GETNEXTQUOTA(cmd flags[quota_cmd_getnextquota], special ptr[in, blockdev_filename], id uid, addr ptr[out, if_nextdqblk]) |
| |
| quotactl_fd$Q_SYNC(fd fd, cmd flags[quota_cmd_sync], id const[0], addr const[0]) |
| quotactl_fd$Q_QUOTAON(fd fd, cmd flags[quota_cmd_quota_on], id uid, addr ptr[in, filename]) |
| quotactl_fd$Q_QUOTAOFF(fd fd, cmd flags[quota_cmd_quota_off], id uid, addr const[0]) |
| quotactl_fd$Q_GETFMT(fd fd, cmd flags[quota_cmd_getfmt], id uid, addr ptr[out, int32]) |
| quotactl_fd$Q_GETINFO(fd fd, cmd flags[quota_cmd_getinfo], id uid, addr ptr[out, if_dqinfo]) |
| quotactl_fd$Q_SETINFO(fd fd, cmd flags[quota_cmd_setinfo], id uid, addr ptr[in, if_dqinfo]) |
| quotactl_fd$Q_GETQUOTA(fd fd, cmd flags[quota_cmd_getquota], id uid, addr ptr[out, if_dqblk]) |
| quotactl_fd$Q_SETQUOTA(fd fd, cmd flags[quota_cmd_setquota], id uid, addr ptr[in, if_dqblk]) |
| quotactl_fd$Q_GETNEXTQUOTA(fd fd, cmd flags[quota_cmd_getnextquota], id uid, addr ptr[out, if_nextdqblk]) |
| |
| if_dqinfo { |
| dqi_bgrace int64 |
| dqi_igrace int64 |
| dqi_flags flags[quota_dgqinfo_flags, int32] |
| dqi_valid flags[quota_dgqinfo_valid, int32] |
| } |
| |
| if_dqblk { |
| dqb_bhardlimit int64 |
| dqb_bsoftlimit int64 |
| dqb_curspace int64 |
| dqb_ihardlimit int64 |
| dqb_isoftlimit int64 |
| dqb_curinodes int64 |
| dqb_btime int64 |
| dqb_itime int64 |
| dqb_valid int32 |
| } |
| |
| if_nextdqblk { |
| dqb_bhardlimit int64 |
| dqb_bsoftlimit int64 |
| dqb_curspace int64 |
| dqb_ihardlimit int64 |
| dqb_isoftlimit int64 |
| dqb_curinodes int64 |
| dqb_btime int64 |
| dqb_itime int64 |
| dqb_valid int32 |
| dqb_id int32 |
| } |
| |
| quota_dgqinfo_flags = DQF_ROOT_SQUASH |
| quota_dgqinfo_valid = IIF_BGRACE, IIF_IGRACE, IIF_FLAGS |
| |
| quota_cmd_sync = Q_SYNC_USR, Q_SYNC_GRP, Q_SYNC_PRJ |
| quota_cmd_quota_on = Q_QUOTAON_USR, Q_QUOTAON_GRP, Q_QUOTAON_PRJ |
| quota_cmd_quota_off = Q_QUOTAOFF_USR, Q_QUOTAOFF_GRP, Q_QUOTAOFF_PRJ |
| quota_cmd_getfmt = Q_GETFMT_USR, Q_GETFMT_GRP, Q_GETFMT_PRJ |
| quota_cmd_getinfo = Q_GETINFO_USR, Q_GETINFO_GRP, Q_GETINFO_PRJ |
| quota_cmd_setinfo = Q_SETINFO_USR, Q_SETINFO_GRP, Q_SETINFO_PRJ |
| quota_cmd_getquota = Q_GETQUOTA_USR, Q_GETQUOTA_GRP, Q_GETQUOTA_PRJ |
| quota_cmd_setquota = Q_SETQUOTA_USR, Q_SETQUOTA_GRP, Q_SETQUOTA_PRJ |
| quota_cmd_getnextquota = Q_GETNEXTQUOTA_USR, Q_GETNEXTQUOTA_GRP, Q_GETNEXTQUOTA_PRJ |
| |
| define Q_SYNC_USR (Q_SYNC << SUBCMDSHIFT) | USRQUOTA |
| define Q_SYNC_GRP (Q_SYNC << SUBCMDSHIFT) | GRPQUOTA |
| define Q_SYNC_PRJ (Q_SYNC << SUBCMDSHIFT) | PRJQUOTA |
| define Q_QUOTAON_USR (Q_QUOTAON << SUBCMDSHIFT) | USRQUOTA |
| define Q_QUOTAON_GRP (Q_QUOTAON << SUBCMDSHIFT) | GRPQUOTA |
| define Q_QUOTAON_PRJ (Q_QUOTAON << SUBCMDSHIFT) | PRJQUOTA |
| define Q_QUOTAOFF_USR (Q_QUOTAOFF << SUBCMDSHIFT) | USRQUOTA |
| define Q_QUOTAOFF_GRP (Q_QUOTAOFF << SUBCMDSHIFT) | GRPQUOTA |
| define Q_QUOTAOFF_PRJ (Q_QUOTAOFF << SUBCMDSHIFT) | PRJQUOTA |
| define Q_GETFMT_USR (Q_GETFMT << SUBCMDSHIFT) | USRQUOTA |
| define Q_GETFMT_GRP (Q_GETFMT << SUBCMDSHIFT) | GRPQUOTA |
| define Q_GETFMT_PRJ (Q_GETFMT << SUBCMDSHIFT) | PRJQUOTA |
| define Q_GETINFO_USR (Q_GETINFO << SUBCMDSHIFT) | USRQUOTA |
| define Q_GETINFO_GRP (Q_GETINFO << SUBCMDSHIFT) | GRPQUOTA |
| define Q_GETINFO_PRJ (Q_GETINFO << SUBCMDSHIFT) | PRJQUOTA |
| define Q_SETINFO_USR (Q_SETINFO << SUBCMDSHIFT) | USRQUOTA |
| define Q_SETINFO_GRP (Q_SETINFO << SUBCMDSHIFT) | GRPQUOTA |
| define Q_SETINFO_PRJ (Q_SETINFO << SUBCMDSHIFT) | PRJQUOTA |
| define Q_GETQUOTA_USR (Q_GETQUOTA << SUBCMDSHIFT) | USRQUOTA |
| define Q_GETQUOTA_GRP (Q_GETQUOTA << SUBCMDSHIFT) | GRPQUOTA |
| define Q_GETQUOTA_PRJ (Q_GETQUOTA << SUBCMDSHIFT) | PRJQUOTA |
| define Q_SETQUOTA_USR (Q_SETQUOTA << SUBCMDSHIFT) | USRQUOTA |
| define Q_SETQUOTA_GRP (Q_SETQUOTA << SUBCMDSHIFT) | GRPQUOTA |
| define Q_SETQUOTA_PRJ (Q_SETQUOTA << SUBCMDSHIFT) | PRJQUOTA |
| define Q_GETNEXTQUOTA_USR (Q_GETNEXTQUOTA << SUBCMDSHIFT) | USRQUOTA |
| define Q_GETNEXTQUOTA_GRP (Q_GETNEXTQUOTA << SUBCMDSHIFT) | GRPQUOTA |
| define Q_GETNEXTQUOTA_PRJ (Q_GETNEXTQUOTA << SUBCMDSHIFT) | PRJQUOTA |