Re: [PATCH 11/48] xfs: add CRC checking to dir2 data blocks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jun 07, 2013 at 10:25:34AM +1000, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> This addition follows the same pattern as the dir2 block CRCs.
>

Corresponds to 33363feed16.

> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>

...

> diff --git a/libxfs/xfs_dir2_block.c b/libxfs/xfs_dir2_block.c
> index c79199a..18eabd1 100644
> --- a/libxfs/xfs_dir2_block.c
> +++ b/libxfs/xfs_dir2_block.c
> @@ -59,7 +59,7 @@ xfs_dir3_block_verify(
>  		if (hdr3->magic != cpu_to_be32(XFS_DIR2_BLOCK_MAGIC))
>  			return false;
>  	}
> -	if (__xfs_dir2_data_check(NULL, bp))
> +	if (__xfs_dir3_data_check(NULL, bp))
>  		return false;
>  	return true;
>  }
> @@ -535,7 +535,7 @@ xfs_dir2_block_addname(
>  		xfs_dir2_data_log_header(tp, bp);
>  	xfs_dir2_block_log_tail(tp, bp);
>  	xfs_dir2_data_log_entry(tp, bp, dep);
> -	xfs_dir2_data_check(dp, bp);
> +	xfs_dir3_data_check(dp, bp);
>  	return 0;
>  }

Changes to xfs_dir2_block_getdents in the kernel are not included here.  Again,
it seems that we don't have this function in userspace.

> diff --git a/libxfs/xfs_dir2_data.c b/libxfs/xfs_dir2_data.c
> index 66aab07..69841df 100644
> --- a/libxfs/xfs_dir2_data.c
> +++ b/libxfs/xfs_dir2_data.c
> @@ -25,7 +25,7 @@
>   * Return 0 is the buffer is good, otherwise an error.
>   */
>  int
> -__xfs_dir2_data_check(
> +__xfs_dir3_data_check(
>  	struct xfs_inode	*dp,		/* incore inode pointer */
>  	struct xfs_buf		*bp)		/* data block's buffer */
>  {
> @@ -61,6 +61,7 @@ __xfs_dir2_data_check(
>  		endp = (char *)lep;
>  		break;
>  	case XFS_DIR2_DATA_MAGIC:
> +	case XFS_DIR3_DATA_MAGIC:

The endian swap was done in the switch parens in the kernel

> @@ -196,7 +203,7 @@ xfs_dir2_data_verify(
>   * format buffer or a data format buffer on readahead.
>   */
>  static void
> -xfs_dir2_data_reada_verify(
> +xfs_dir3_data_reada_verify(
>  	struct xfs_buf		*bp)
>  {
>  	struct xfs_mount	*mp = bp->b_target->bt_mount;
> @@ -209,7 +216,8 @@ xfs_dir2_data_reada_verify(
>  		bp->b_ops->verify_read(bp);
>  		return;
>  	case XFS_DIR2_DATA_MAGIC:
> -		xfs_dir2_data_verify(bp);
> +	case XFS_DIR3_DATA_MAGIC:
> +		xfs_dir3_data_verify(bp);

Also here the endian swap was done differently in the kernel.

> diff --git a/libxfs/xfs_dir2_leaf.c b/libxfs/xfs_dir2_leaf.c
> index a1df347..0f848b4 100644
> --- a/libxfs/xfs_dir2_leaf.c
> +++ b/libxfs/xfs_dir2_leaf.c
> @@ -369,6 +373,7 @@ xfs_dir2_leaf_addname(
>  	__be16			*tagp;		/* end of data entry */
>  	xfs_trans_t		*tp;		/* transaction pointer */
>  	xfs_dir2_db_t		use_block;	/* data block number */
> +	struct xfs_dir2_data_free *bf;		/* bestfree table */
>  
>  	trace_xfs_dir2_leaf_addname(args);

Seem to be missing changes to xfs_dir2_leaf_readbuf, which we don't have in
userspace...

Looks fine.

Reviewed-by: Ben Myers <bpm@xxxxxxx>

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs




[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux