public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
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

             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