# 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 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