[BUG] quota.get_mode fails when quota is on
Open
Nobody has claimed this yet.
bug
severity-high
- Dominant language
- Python
- Stars
- 15.7k
- Forks
- 5.6k
- Avg merge
- 2d 44m
- Merged PRs (30d)
- 80
Description
Description
quota.get_mode fails when quota is on.
Setup
Create a filesystem, e.g. EXT4, and mount it.
Steps to Reproduce the behavior
root@omv5box:/home/vagrant# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@omv5box:/home/vagrant# blkid /dev/sda1
/dev/sda1: UUID="4302e6b9-ae66-4782-a716-79cf6ee42a3a" TYPE="ext4" PARTUUID="890c42ed-3606-4fdd-b120-05a5e59a3419"
root@omv5box:/home/vagrant# mount | grep /dev/sda1
/dev/sda1 on /srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1 type ext4 (rw,relatime,jqfmt=vfsv0,usrjquota=aquota.user,grpjquota=aquota.group)
root@omv5box:/home/vagrant# ls -alh /srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1
total 52K
drwxr-xr-x 5 root root 4.0K Oct 20 15:17 .
drwxr-xr-x 8 root root 4.0K Oct 21 19:00 ..
-rw------- 1 root root 6.0K Oct 21 19:17 aquota.group
-rw------- 1 root root 7.0K Oct 21 19:17 aquota.user
root@omv5box:/home/vagrant# quotaoff /dev/sda1
root@omv5box:/home/vagrant# quotaon -p /dev/sda1
group quota on /srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1 (/dev/sda1) is off
user quota on /srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1 (/dev/sda1) is off
project quota on /srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1 (/dev/sda1) is off
root@omv5box:/home/vagrant# echo $?
0
root@omv5box:/home/vagrant# salt-call quota.get_mode /dev/sda1
local:
----------
/srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1:
----------
device:
/dev/sda1
group:
off
project:
off
user:
off
root@omv5box:/home/vagrant# quotaon /dev/sda1
root@omv5box:/home/vagrant# quotaon -p /dev/sda1
group quota on /srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1 (/dev/sda1) is on
user quota on /srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1 (/dev/sda1) is on
project quota on /srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1 (/dev/sda1) is off
root@omv5box:/home/vagrant# echo $?
2
root@omv5box:/home/vagrant# salt-call quota.get_mode /dev/sda1
[ERROR ] Command '['quotaon', '-p', '/dev/sda1']' failed with return code: 2
[ERROR ] stdout: group quota on /srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1 (/dev/sda1) is on
user quota on /srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1 (/dev/sda1) is on
project quota on /srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1 (/dev/sda1) is off
[ERROR ] retcode: 2
[ERROR ] Command 'quotaon -p /dev/sda1' failed with return code: 2
[ERROR ] output: group quota on /srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1 (/dev/sda1) is on
user quota on /srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1 (/dev/sda1) is on
project quota on /srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1 (/dev/sda1) is off
local:
----------
/srv/dev-disk-by-id-scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-1-part1:
----------
device:
/dev/sda1
group:
on
project:
off
user:
on
Expected behavior
The return code 2 from quotaon -p /dev/xxx should be handled properly.
Versions Report
salt --versions-report
(Provided by running salt --versions-report. Please also mention any differences in master/minion versions.)Salt Version:
Salt: 3001.1
Dependency Versions:
cffi: Not Installed
cherrypy: Not Installed
dateutil: 2.7.3
docker-py: Not Installed
gitdb: Not Installed
gitpython: Not Installed
Jinja2: 2.10
libgit2: Not Installed
M2Crypto: Not Installed
Mako: Not Installed
msgpack-pure: Not Installed
msgpack-python: 0.5.6
mysql-python: Not Installed
pycparser: Not Installed
pycrypto: Not Installed
pycryptodome: 3.6.1
pygit2: Not Installed
Python: 3.7.3 (default, Jul 25 2020, 13:03:44)
python-gnupg: Not Installed
PyYAML: 3.13
PyZMQ: 17.1.2
smmap: Not Installed
timelib: Not Installed
Tornado: 4.5.3
ZMQ: 4.3.1
System Versions:
dist: debian 10 buster
locale: UTF-8
machine: x86_64
release: 4.19.0-11-amd64
system: Linux
version: Debian GNU/Linux 10 buster
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the quota.get_mode entry point and reproduce the behavior with quotaon -p on a filesystem where user and group quotas are on but project quota is off. Done means return code 2 is handled without treating the command as an unhandled failure, while the reported group, user, and project states remain available.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux, python
- Domain
- devops
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100