Re: [PATCH 21/30] db: verify and calculate dquot CRCs

Dave Chinner
2013-11-05T00:25:14Z

On Mon, Nov 04, 2013 at 01:06:27AM -0800, Christoph Hellwig wrote:
> On Wed, Oct 30, 2013 at 03:31:12PM +1100, Dave Chinner wrote:
> > When we set the current Io cursor to point at a dquot block, verify
> > that the dquot CRC is intact. And prior to writing such an IO
> > cursor, calculate the dquot CRC.
> >
> > Signed-off-by: Dave Chinner <dchinner@redhat.com>
> > ---
> > db/io.c | 5 ++++-
> > db/io.h | 1 +
> > 2 files changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/db/io.c b/db/io.c
> > index 8ddb5e5..7281148 100644
> > --- a/db/io.c
> > +++ b/db/io.c
> > @@ -464,7 +464,9 @@ write_cur(void)
> >
> > if (iocur_top->ino_buf)
> > libxfs_dinode_calc_crc(mp, iocur_top->data);
> > -
> > + if (iocur_top->dquot_buf)
> > + xfs_update_cksum(iocur_top->data, sizeof(struct xfs_dqblk),
> > + XFS_DQUOT_CRC_OFF);
>
> The patch looks good to get going, but it seems we'd be better off going
> through an ops vector here in some form..

Potentially - if we need a third object-within-a-buffer verification
then it will be worthwhile to do this. However, for the moment we
only have to support inodes and dquots and so for the moment I don't
see that further abstraction is necessary.

Hence right now I'd prefer to make it explicit that we are doing
these CRC calculations here and just keep in mind that if we are
going to add more we need to abstract it into an ops vector at that
time...

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.com