xfs
[Top] [All Lists]

Re: [RFC v5 PATCH 2/4] xfs: Add pquota fields where gquota is used.

To: Ben Myers <bpm@xxxxxxx>
Subject: Re: [RFC v5 PATCH 2/4] xfs: Add pquota fields where gquota is used.
From: Chandra Seetharaman <sekharan@xxxxxxxxxx>
Date: Wed, 02 May 2012 17:51:53 -0500
Cc: xfs@xxxxxxxxxxx
In-reply-to: <20120502204903.GO16881@xxxxxxx>
Organization: IBM
References: <20120314202623.17044.90045.sendpatchset@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> <20120314202636.17044.11836.sendpatchset@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> <20120502204903.GO16881@xxxxxxx>
Reply-to: sekharan@xxxxxxxxxx
On Wed, 2012-05-02 at 15:49 -0500, Ben Myers wrote:
> On Wed, Mar 14, 2012 at 03:26:36PM -0500, Chandra Seetharaman wrote:
> > >From 0ed09750a12c6265861415bdb431c14f8eb02437 Mon Sep 17 00:00:00 2001
> > From: Chandra Seetharaman <sekharan@xxxxxxxxxx>
> > Date: Wed, 14 Mar 2012 14:17:47 -0500
> > Subject: [PATCH 2/4] Add project quota changes to all the places where 
> > group quota field
> >  is used.
> > 
> > No externally visible changed and no superblock changes, yet.
> 
> Looks like this patch does a few things:
> * add separate project quota members into various structures
> * split project quota and group quotas so that instead of overriding
>   the group quota members incore, the new project quota members are
>   used instead
> * get rid of usage of the OQUOTA flag incore, in favor of separate group
>   and project quota flags.
> * add a project dquot argument to various functions

Yes. Nothing is external yet.

I understand you want details on what changes have been made. If so, I
can add them.

> .
> 
> > Signed-off-by: Chandra Seetharaman <sekharan@xxxxxxxxxx>
> 
> ...
> 
> > @@ -1593,9 +1662,23 @@ xfs_qm_init_quotainos(
> >                     return XFS_ERROR(error);
> >             }
> >     }
> > +   if (XFS_IS_PQUOTA_ON(mp) && pip == NULL) {
> > +           error = xfs_qm_qino_alloc(mp, &pip,
> > +                                        sbflags | XFS_SB_GQUOTINO,
>                                                       ^^^^
> So... you're still using the group quota inode at this point.

Yes, that is by design. There is no PQUOTINO with this patch. It is
added in the next patch.

Change all internal stuff in this patch so that the next patch which
changes the superblock has very limited change (for easier read/review
of the patch).

> 
> > +                                        flags | XFS_QMOPT_PQUOTA);
> > +           if (error) {
> > +                   if (uip)
> > +                           IRELE(uip);
> > +                   if (gip)
> > +                           IRELE(gip);
> > +
> > +                   return XFS_ERROR(error);
> > +           }
> > +   }
> 
> ...
> 
> > @@ -342,9 +354,12 @@ xfs_trans_apply_dquot_deltas(
> >  
> >     ASSERT(tp->t_dqinfo);
> >     qa = tp->t_dqinfo->dqa_usrdquots;
> > -   for (j = 0; j < 2; j++) {
> > +   for (j = 0; j < 3; j++) { /* 0 - usr, 1 - grp, 2 - prj */
> >             if (qa[0].qt_dquot == NULL) {
>                     ^^^^^^^^^^^^^^^^^^^^^^
> That really looks weird to me.  Can you explain what is going on there?

Just to make it clear, I didn't add it :).

Per my understanding, it means is that there is no dquot structure of
this type(user, group, project) in this transaction, so we just skip
over it and move to the next type.

> 
> 
> > -                   qa = tp->t_dqinfo->dqa_grpdquots;
> > +                   if (qa == tp->t_dqinfo->dqa_usrdquots)
> > +                           qa = tp->t_dqinfo->dqa_grpdquots;
> > +                   else
> > +                           qa = tp->t_dqinfo->dqa_prjdquots;
> >                     continue;
> 


<Prev in Thread] Current Thread [Next in Thread>