no quota output if no usage?
This seems a bit weird:
# xfs_quota -x -c 'quota -p project1' /mnt/test #
Huh, did it work?
# xfs_quota -x -c 'quota -pv project1' /mnt/test Disk quotas for Project project1 (1) Filesystem Blocks Quota Limit Warn/Time Mounted on /dev/sdc2 0 1024000 1228800 00 [--------] /mnt/test #
Oh, ok!
I don't know why reporting limits should depend on the verbose flag, but it has been that way since 2005 in quota_mount() :
if (!(flags & VERBOSE_FLAG)) {
count = 0;
if ((form & XFS_BLOCK_QUOTA) && d.d_bcount)
count++;
if ((form & XFS_INODE_QUOTA) && d.d_icount)
count++;
if ((form & XFS_RTBLOCK_QUOTA) && d.d_rtbcount)
count++;
if (!count)
return 0;
}I'm inclined to change it, but is it OK to change the output of this - might old scripts be relying on this (odd) silent behavior? I think it can certainly cause confusion (as evidenced by at least one bug I'm looking at ...)
Thanks,
-Eric
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 30 lines · Eric Sandeen
This seems a bit weird:
# xfs_quota -x -c 'quota -p project1' /mnt/test #Huh, did it work?
# xfs_quota -x -c 'quota -pv project1' /mnt/test Disk quotas for Project project1 (1) Filesystem Blocks Quota Limit Warn/Time Mounted on /dev/sdc2 0 1024000 1228800 00 [--------] /mnt/test #Oh, ok!
I don't know why reporting limits should depend on the verbose flag, but it has been that way since 2005 in
quota_mount():if (!(flags & VERBOSE_FLAG)) { count = 0; if ((form & XFS_BLOCK_QUOTA) && d.d_bcount) count++; if ((form & XFS_INODE_QUOTA) && d.d_icount) count++; if ((form & XFS_RTBLOCK_QUOTA) && d.d_rtbcount) count++; if (!count) return 0; }
Quoted 3 lines
I'm inclined to change it, but is it OK to change the output of this - might old scripts be relying on this (odd) silent behavior? I think it can certainly cause confusion (as evidenced by at least one bug I'm looking at ...)
It's done that way because the quota lookup can find dquots that are completely empty because there are no uid/gid/prid found in the filesystem, but the dquot is allocated because it's within a block that has in use dquots in it. I'd guess that if you queried a non-existent project quota (e.g. prid 2) you'd get the same result....
i.e. you've got to have inodes or blocks accounted to have a dquot "created" for the uid/gid/prid in normal conditions, hence dquots with zero counts are ignored by default as they are effectively the same as unallocated dquots....
Cheers,
Dave.
Signature · 7 lines
Dave Chinner [email protected] _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Quoted 35 lines · Dave Chinner
Quoted 30 lines · Eric Sandeen
This seems a bit weird:
# xfs_quota -x -c 'quota -p project1' /mnt/test #Huh, did it work?
# xfs_quota -x -c 'quota -pv project1' /mnt/test Disk quotas for Project project1 (1) Filesystem Blocks Quota Limit Warn/Time Mounted on /dev/sdc2 0 1024000 1228800 00 [--------] /mnt/test #Oh, ok!
I don't know why reporting limits should depend on the verbose flag, but it has been that way since 2005 in
quota_mount():if (!(flags & VERBOSE_FLAG)) { count = 0; if ((form & XFS_BLOCK_QUOTA) && d.d_bcount) count++; if ((form & XFS_INODE_QUOTA) && d.d_icount) count++; if ((form & XFS_RTBLOCK_QUOTA) && d.d_rtbcount) count++; if (!count) return 0; }Quoted 3 lines
I'm inclined to change it, but is it OK to change the output of this - might old scripts be relying on this (odd) silent behavior? I think it can certainly cause confusion (as evidenced by at least one bug I'm looking at ...)
Quoted 6 lines
It's done that way because the quota lookup can find dquots that are completely empty because there are no uid/gid/prid found in the filesystem, but the dquot is allocated because it's within a block that has in use dquots in it. I'd guess that if you queried a non-existent project quota (e.g. prid 2) you'd get the same result....
if I ask for something that doesn't exist by name, it tells me:
# xfs_quota -x -c 'quota -pv project4' /mnt/test xfs_quota: cannot find project project4
or if I ask by prid, I get nothing with or without -v :(
# xfs_quota -x -c 'quota -pv 4' /mnt/test #
Quoted 4 lines
i.e. you've got to have inodes or blocks accounted to have a dquot "created" for the uid/gid/prid in normal conditions, hence dquots with zero counts are ignored by default as they are effectively the same as unallocated dquots....
That's all well and good, but with -v it is able to tell me what the set limits are, and that I have no blocks allocated within those limits.
So the information we might expect seems available; it's just not shown, because the code short-circuits it w/o -v.
Or am I missing something ...
-Eric
Quoted 4 lines
Cheers,
Dave.
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 43 lines · Eric Sandeen
Quoted 35 lines · Dave Chinner
Quoted 30 lines · Eric Sandeen
This seems a bit weird:
# xfs_quota -x -c 'quota -p project1' /mnt/test #Huh, did it work?
# xfs_quota -x -c 'quota -pv project1' /mnt/test Disk quotas for Project project1 (1) Filesystem Blocks Quota Limit Warn/Time Mounted on /dev/sdc2 0 1024000 1228800 00 [--------] /mnt/test #Oh, ok!
I don't know why reporting limits should depend on the verbose flag, but it has been that way since 2005 in
quota_mount():if (!(flags & VERBOSE_FLAG)) { count = 0; if ((form & XFS_BLOCK_QUOTA) && d.d_bcount) count++; if ((form & XFS_INODE_QUOTA) && d.d_icount) count++; if ((form & XFS_RTBLOCK_QUOTA) && d.d_rtbcount) count++; if (!count) return 0; }Quoted 3 lines
I'm inclined to change it, but is it OK to change the output of this - might old scripts be relying on this (odd) silent behavior? I think it can certainly cause confusion (as evidenced by at least one bug I'm looking at ...)
Quoted 6 lines
It's done that way because the quota lookup can find dquots that are completely empty because there are no uid/gid/prid found in the filesystem, but the dquot is allocated because it's within a block that has in use dquots in it. I'd guess that if you queried a non-existent project quota (e.g. prid 2) you'd get the same result....
Quoted 4 lines
if I ask for something that doesn't exist by name, it tells me:
# xfs_quota -x -c 'quota -pv project4' /mnt/test xfs_quota: cannot find project project4
It can't convert it to a prid because it's not in the /etc/projects file. Project quotas are a little bit special in this way.
Quoted 4 lines
or if I ask by prid, I get nothing with or without -v :(
# xfs_quota -x -c 'quota -pv 4' /mnt/test #
Ah, I missed the XFS_IS_DQUOT_UNINITIALIZED() check at the syscall entry point. It checks for everything being zero and returns -ENOENT if it's an empty dquot. Too many bloody layers of validation....
Quoted 5 lines
Quoted 4 lines
i.e. you've got to have inodes or blocks accounted to have a dquot "created" for the uid/gid/prid in normal conditions, hence dquots with zero counts are ignored by default as they are effectively the same as unallocated dquots....
Quoted 7 lines
That's all well and good, but with -v it is able to tell me what the set limits are, and that I have no blocks allocated within those limits.
So the information we might expect seems available; it's just not shown, because the code short-circuits it w/o -v.
Or am I missing something ...
Nope, I'm confusing different reporting command behaviour....
Cheers,
Dave.
Signature · 7 lines
Dave Chinner [email protected] _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Quoted 3 lines · Dave Chinner
Quoted 1 line
Or am I missing something ...
Nope, I'm confusing different reporting command behaviour....
Ok, so back to the original question: think it's cool to drop the verbose requirement to find out limits when there is 0 usage?
-Eric
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 8 lines · Eric Sandeen
Quoted 3 lines · Dave Chinner
Quoted 1 line
Or am I missing something ...
Nope, I'm confusing different reporting command behaviour....
Ok, so back to the original question: think it's cool to drop the verbose requirement to find out limits when there is 0 usage?
Just as a data point quota(1) command from quota-tools also doesn't
report quota entries where no space & inode is accounted without -v option. I never thought it's particularly useful but apparently it's some heritage from the original implementation of quota in some Unix and so I decided to maintain compatibility...
Honza
Signature · 7 lines
Jan Kara <[email protected]> SUSE Labs, CR _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Quoted 7 lines · Jan Kara
Quoted 6 lines · Eric Sandeen
Quoted 3 lines · Dave Chinner
Quoted 1 line
Or am I missing something ...
Nope, I'm confusing different reporting command behaviour....
Quoted 7 lines
Quoted 2 lines
Ok, so back to the original question: think it's cool to drop the verbose requirement to find out limits when there is 0 usage?
Just as a data point quota(1) command from quota-tools also doesn't
report quota entries where no space & inode is accounted without -v option. I never thought it's particularly useful but apparently it's some heritage from the original implementation of quota in some Unix and so I decided to maintain compatibility...
Thanks - sounds like maybe the weight of history is behind this. Perhaps it'll just be a documentation fix to clarify what happens when there's no block or inode used.
-Eric
Quoted 2 lines
Honza
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs