Skip to content

quotactl

Partial in Antinomie 0.7.0 · Syscall list

long quotactl(unsigned int cmd, const char *special, qid_t id, void *addr);
Number (x86-64) 179
ABI common
Kernel entry point sys_quotactl

This is the raw kernel prototype from the pinned Linux 6.12.94 schema, not the libc wrapper.

Manages disk quotas of a filesystem identified by a block device path.

Name Type Meaning
cmd (arg0) unsigned int Command or operation selector.
special (arg1) const char * Block device path.
id (arg2) qid_t Identifier whose meaning depends on the call.
addr (arg3) void * Memory or socket address, depending on the call.

On success: a command-specific value, usually 0.

In an Antinomie trace the Return column and the ret filter field show the raw kernel return value. On failure that is the negative errno, for example -2 for ENOENT, not the -1 plus errno that the libc wrapper gives. syscall.errno holds the positive errno and syscall.success is false.

Raw return Name Meaning
-22 EINVAL An argument is invalid.
-1 EPERM The operation is not permitted for this process.

quotactl(2) on man7.org

Coverage mark: Partial. Known subcommands decode the addr structure. An unknown subcommand records a quotactl.unknown_selector “no decoder” gap.

Every call is recorded as an Entry record (the six argument words and the pointees copied at entry) and an Exit record (the return value and the pointees copied at exit).

Argument When How Recorded field key Condition
cmd (arg0) Entry raw scalar word args.0, args.cmd
special (arg1) Entry the pointer itself, as a raw word args.1, args.raw[1]
↳ pointee Entry NUL-terminated block-device path, up to 4,096 bytes arg1.special the pointer is not NULL (only Q_SYNC allows NULL)
id (arg2) Entry raw scalar word args.2, args.id
addr (arg3) Entry the pointer itself, as a raw word args.3, args.raw[3]
↳ pointee Entry NUL-terminated path, up to 4,096 bytes arg3.quota_file subcommand Q_QUOTAON
↳ pointee Exit u32 arg3.format subcommand Q_GETFMT and result is 0
↳ pointee Entry and exit structure if_dqinfo arg3.info input at entry for Q_SETINFO; output at exit for Q_GETINFO
↳ pointee Entry and exit structure if_dqblk (or if_nextdqblk for Q_GETNEXTQUOTA) arg3.dqblk input at entry for Q_SETQUOTA; output at exit for the get commands
↳ pointee Entry u32 arg3.flags subcommands Q_XQUOTAON, Q_XQUOTAOFF, Q_XQUOTARM
↳ pointee Exit structure fs_quota_stat or fs_quota_statv arg3.stat subcommands Q_XGETQSTAT, Q_XGETQSTATV
↳ pointee Entry and exit structure fs_disk_quota arg3.dquot input at entry for Q_XSETQLIM; output at exit for Q_XGETQUOTA, Q_XGETNEXTQUOTA
  • Selector: the subcommand in cmd. The device path is copied at entry as arg1.special; addr roles depend on the subcommand.
  • Result: ret, syscall.errno, syscall.success, syscall.duration_ns.
  • Argument words: args.cmd (arg0), args.special (arg1), args.id (arg2), args.addr (arg3); args.0 to args.5 by position.
  • Structure if_nextdqblk behind addr (arg3): args.addr.<member> for dqb_bhardlimit, dqb_bsoftlimit, dqb_btime, dqb_curinodes, dqb_curspace, dqb_id, dqb_ihardlimit, dqb_isoftlimit, dqb_itime, dqb_valid.

See Syscall Trace filter for the full syntax.

  • An unknown subcommand records quotactl.unknown_selector with the “no decoder” status.
  • See the coverage mark above for the code paths that record a gap.

For what the capture statuses mean, see Capture statuses. For what is never recorded, see Known gaps.