On Fri, Sep 02, 2016 at 08:25:12AM -0500, Eric Sandeen wrote:
> On 9/1/16 9:27 PM, Dave Chinner wrote:
> > From: Dave Chinner <dchinner@xxxxxxxxxx>
> >
> > To verify that the AGFL contents is sane, we need to have access to
> > the indexes that tell us what part of the AGFL is active. We cannot
> > access the AGF buffer from the AGFL verifier, so we need to shadow
> > these values in the struct xfs_perag so we check them when required.
> >
> > Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
> > ---
> > fs/xfs/libxfs/xfs_alloc.c | 4 ++++
> > fs/xfs/xfs_mount.h | 2 ++
> > 2 files changed, 6 insertions(+)
> >
> > diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c
> > index 23559b9..1aef556 100644
> > --- a/fs/xfs/libxfs/xfs_alloc.c
> > +++ b/fs/xfs/libxfs/xfs_alloc.c
> > @@ -2255,6 +2255,7 @@ xfs_alloc_get_freelist(
> > be32_add_cpu(&agf->agf_flcount, -1);
> > xfs_trans_agflist_delta(tp, -1);
> > pag->pagf_flcount--;
> > + pag->pagf_flfirst = be32_to_cpu(agf->agf_flfirst);
> > xfs_perag_put(pag);
> >
> > logflags = XFS_AGF_FLFIRST | XFS_AGF_FLCOUNT;
>
> Still reviewing, but this kind of jumped out at me, seems like the get/put
> functions are a bit jumbled up:
Gets cleaned up in a later patch.
> sync, should there be a wrapper to encapsulate it all?
>
> like:
>
> xfs_agf_{advance/drop/remove}_first(mp, agf, pagf)
Not really necessary for single use functions whose express purpose
is manipulating the agfl indexes
Cheers,
Dave.
--
Dave Chinner
david@xxxxxxxxxxxxx
|