xfs
[Top] [All Lists]

Re: [PATCH V5] xfs_db: add crc manipulation commands

To: Eric Sandeen <sandeen@xxxxxxxxxxx>
Subject: Re: [PATCH V5] xfs_db: add crc manipulation commands
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Mon, 22 Aug 2016 10:38:00 +1000
Cc: xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <0bb88897-3dfc-de4e-05fb-b737221f0d80@xxxxxxxxxxx>
References: <8cb34b7c-5154-ebb4-7706-1375e94abd74@xxxxxxxxxx> <0bb88897-3dfc-de4e-05fb-b737221f0d80@xxxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Sun, Aug 14, 2016 at 07:30:51PM -0500, Eric Sandeen wrote:
> This adds a new "crc" command to xfs_db for CRC-enabled filesystems.
....
> diff --git a/db/io.c b/db/io.c
> index 91cab12..240b129 100644
> --- a/db/io.c
> +++ b/db/io.c
> @@ -27,6 +27,7 @@
>  #include "output.h"
>  #include "init.h"
>  #include "malloc.h"
> +#include "crc.h"
>  
>  static int   pop_f(int argc, char **argv);
>  static void     pop_help(void);
> @@ -473,12 +474,15 @@ xfs_verify_recalc_crc(
>  void
>  write_cur(void)
>  {
> +     int skip_crc = (iocur_top->bp->b_ops->verify_write == xfs_dummy_verify);
> +
>       if (iocur_sp < 0) {
>               dbprintf(_("nothing to write\n"));
>               return;
>       }
>  
> -     if (xfs_sb_version_hascrc(&mp->m_sb) && iocur_top->ino_buf) {
> +     if (xfs_sb_version_hascrc(&mp->m_sb) && iocur_top->ino_buf &&
> +         !skip_crc) {
>               libxfs_dinode_calc_crc(mp, iocur_top->data);
>               iocur_top->ino_crc_ok = 1;
>       }
> @@ -489,6 +493,19 @@ write_cur(void)
>               write_cur_bbs();
>       else
>               write_cur_buf();
> +
> +     /* If we didn't write the crc automatically, re-check validity */
> +     if (iocur_top->ino_buf && skip_crc) {
> +             xfs_dinode_t    *dip;
> +             xfs_ino_t       ino;
> +
> +             dip = iocur_top->data;
> +             ino = iocur_top->ino;
> +             iocur_top->ino_crc_ok = xfs_verify_cksum((char *)dip,
> +                                             mp->m_sb.sb_inodesize,
> +                                             XFS_DINODE_CRC_OFF);
> +     }
> +

io.c: In function ¿write_cur¿:
io.c:500:13: warning: variable ¿ino¿ set but not used 
[-Wunused-but-set-variable]
   xfs_ino_t ino;

I've just removed the unused xfs_ino_t here, because it doesn't seem
to have any purpose here.


> diff --git a/db/write.h b/db/write.h
> index 31e2665..664ddcc 100644
> --- a/db/write.h
> +++ b/db/write.h
> @@ -20,5 +20,5 @@ struct field;
>  
>  extern void  write_init(void);
>  extern void  write_block(const field_t *fields, int argc, char **argv);
> -extern void  write_string(const field_t *fields, int argc, char **argv);
>  extern void  write_struct(const field_t *fields, int argc, char **argv);
> +extern void  write_string(const field_t *fields, int argc, char **argv);

Stray hunk? (removed)

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx

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