[PATCH] xfs_quota: print quota id number if the name can't be found

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When use GETNEXTQUOTA ioctl to report project quota, it always
report an unexpected quota:

  (null) 0 0 0 00 [--------]

The ID 0 store the default quota, even if no one set default quota,
it still have quota accounting, but not enforced. So GETNEXTQUOTA
can find and report this undefined quota.

>From this problem, I thought if others' quota name miss, (null) will
be printed too. e.g.

  # xfs_quota -xc "limit -u bsoft=300m bhard=400m test" $mnt
  # xfs_quota -xc "report -u" $mnt
  User ID          Used       Soft       Hard    Warn/Grace
  ---------- --------------------------------------------------
  root                0          0          0     00 [--------]
  test                0     307200     409600     00 [--------]
  # userdel -r test
  # xfs_quota -xc "report -u" $mnt
  User ID          Used       Soft       Hard    Warn/Grace
  ---------- --------------------------------------------------
  root                0          0          0     00 [--------]
  (null)              0     307200     409600     00 [--------]

So this problem same with above id 0's problem. For deal with this,
this patch will print id number if the name can't be found.

But if use old GETQUOTA ioctl, it won't print project id 0 quota
information(if it's not defined). That's different with GETNEXTQUOTA.
For keep consistent, this patch also print project id 0 when use old
GETQUOTA.

Signed-off-by: Zorro Lang <zlang@xxxxxxxxxx>
---

Hi,

This's a problem from GETNEXTQUOTA feature. The original disscussion
is as below:

http://thread.gmane.org/gmane.comp.file-systems.fstests/1852/focus=1968

Then Eryu send a patch to xfstests, try to fix the test failure bring
by this bug. The disscussion is as below:

http://oss.sgi.com/archives/xfs/2016-04/msg00002.html

Finally we decided to fix this problem in xfsprogs. After talked with
Eric Sandeen, I wrote this patch. At first, Eric thought we shouldn't
print project id 0 quota information, if no one set limit for it.

Then he change his mind to always print "root" as project id 0's name,
if no one define a name for it. But there's another problem, if we
print "root" for project id 0, but we can't run:

  xfs_quota -xc "limit -p xxx xxx root" $mnt

Because the "root" is a fake name. Then I suggest to print id number,
if the name can't be found. This method not only used for project id
0, it used for all user/group/project IDs which no name defined.

So this patch should be the V3 patch. We can't sure which one is the
best idea. If anyone have better idea, please tell me.

Thanks,
Zorro

 quota/report.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/quota/report.c b/quota/report.c
index 48a3f29..557d667 100644
--- a/quota/report.c
+++ b/quota/report.c
@@ -389,7 +389,10 @@ report_mount(
 					name = p->pr_name;
 			}
 		}
-		fprintf(fp, "%-10s", name);
+		if (name != NULL)
+			fprintf(fp, "%-10s", name);
+		else
+			fprintf(fp, "#%-10u", d.d_id);
 	}
 
 	if (form & XFS_BLOCK_QUOTA) {
@@ -571,6 +574,12 @@ report_project_mount(
 			id = oid + 1;
 		}
 	} else {
+		if (!getprprid(0)) {
+			report_mount(fp, 0, "#0", NULL, form, XFS_PROJ_QUOTA,
+			             mount, flags);
+			flags |= NO_HEADER_FLAG;
+		}
+
 		setprent();
 		while ((p = getprent()) != NULL) {
 			if (report_mount(fp, p->pr_prid, p->pr_name, NULL,
-- 
2.5.5

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs



[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux