Thanks for doing this work Arek, I think it will be useful for some
users and defintively is cleaners than what we have now.
> 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
> (since new kernel operates on separate structures for project quota).
Do you mean an old filesystem without the SEPARATEQUOTA bit set here?
> New filesystem (without quota inodes allocated yet), when mounted, gets new
> quota inode allocated for project quota and SEPARATEQUOTA feature bit set.
I think we need the SEPARATEQUOTA bit set explicitly by
mkfs.xfs/xfs_admin. But once we start using project quotas with the
bit set the above sounds fine.
> 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.
We know what sb_gquotino is used for currently from sb_qflags. If it's
used for group quota we can simply set the SEPARATEQUOTA bit and we're
done. To convert a filesystem using project quotas to SEPARATEQUOTA
sb_gquotino needs to be cleared and instead the new sb_pquotino field
needs to point to the project quota inode.
Need to go now, I'll answer to your other questions once I had some more
time to review them.