From: Arkadiusz Miskiewicz <arekm@maven.pl>
To: xfs@oss.sgi.com
Subject: separate project quota from group quota (questions, design issues)
Date: Sat, 4 Sep 2010 10:00:55 +0200 [thread overview]
Message-ID: <201009041000.55878.arekm@maven.pl> (raw)
Dave thinks that this subject should be discussed first here.
My goal is to be able to use user, group and project quota at the same time.
Example usage is a web hosting company which gives some space for customer
(group quota), customer splits it into accounts (user quota) and then each
account can have multiple vhosts with own quota (project quota).
Since on-disk format keeps group and project quota separate already then why
not making it usable for a user as separate things, too?
I started doing that by splitting every group+project handling code into
separate group and project one. Added superblock field for project quota. New
feature flag (SEPARATEPQUOTA).
If old filesystem (for SEPARATEQUOTA) is mounted then I'll simply load
sb_gquotino into mp->m_sb.sb_pquotino which I think is enough to handle old fs
(since new kernel operates on separate structures for project quota).
New filesystem (without quota inodes allocated yet), when mounted, gets new
quota inode allocated for project quota and SEPARATEQUOTA feature bit set.
Converting old fs to separate quota isn't currently solved. User could need
two choices - use old group quota still as group or old group as new project
quota. Not sure how to handle these yet.
Also, quota data is keept in extents and extents have d_flags representing
type of quota (user/group/proj). Now what happens (in current code) with
extents of group/project quota inode if mouting once with grpquota and once
with projquota? Are the other extent entries ignored? (like mounted with group
-> extents with proj type ignored or deleted or something else?).
There is also issue with kernel generic quota interface fs_quota_stat which
doesn't handle third quota at all. It simply won't be able to operate on
project quota (as I guess it isn't able to do that even now).
Initial, not working yet (due to locking issues) patch is here (on top of
projid32bit patch actually, but both features are unrelated):
http://carme.pld-linux.org/~arekm/xfs-parallel-grp-prj-quota-2.patch
My current problem is lack of understanding of locking issues here:
http://pastebin.com/brBHPavR
How locking should look like when there is also project quota? Lines 1390-1397
and 1419-1428.
With current code as pasted on pastebin mount hangs trying to do lock on 1426
line which was unlocked just few lines before.
--
Arkadiusz Miśkiewicz PLD/Linux Team
arekm / maven.pl http://ftp.pld-linux.org/
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next reply other threads:[~2010-09-04 8:00 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-04 8:00 Arkadiusz Miskiewicz [this message]
2010-09-04 17:13 ` separate project quota from group quota (questions, design issues) Michael Monnerie
2010-09-04 23:30 ` Christoph Hellwig
2010-09-05 17:24 ` Arkadiusz Miskiewicz
2010-09-06 1:12 ` Dave Chinner
2010-09-06 6:28 ` Arkadiusz Miskiewicz
2010-09-06 1:16 ` Dave Chinner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201009041000.55878.arekm@maven.pl \
--to=arekm@maven.pl \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox