diff options
Diffstat (limited to 'fs/xfs/xfs_symlink_remote.c')
| -rw-r--r-- | fs/xfs/xfs_symlink_remote.c | 23 | 
1 files changed, 12 insertions, 11 deletions
diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c index 01c85e3f647..23c2f2577c8 100644 --- a/fs/xfs/xfs_symlink_remote.c +++ b/fs/xfs/xfs_symlink_remote.c @@ -19,8 +19,9 @@  #include "xfs.h"  #include "xfs_fs.h"  #include "xfs_format.h" -#include "xfs_log.h" -#include "xfs_trans.h" +#include "xfs_log_format.h" +#include "xfs_shared.h" +#include "xfs_trans_resv.h"  #include "xfs_ag.h"  #include "xfs_sb.h"  #include "xfs_mount.h" @@ -30,6 +31,7 @@  #include "xfs_trace.h"  #include "xfs_symlink.h"  #include "xfs_cksum.h" +#include "xfs_trans.h"  #include "xfs_buf_item.h" @@ -78,7 +80,6 @@ xfs_symlink_hdr_set(   */  bool  xfs_symlink_hdr_ok( -	struct xfs_mount	*mp,  	xfs_ino_t		ino,  	uint32_t		offset,  	uint32_t		size, @@ -131,12 +132,13 @@ xfs_symlink_read_verify(  	if (!xfs_sb_version_hascrc(&mp->m_sb))  		return; -	if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), -				  offsetof(struct xfs_dsymlink_hdr, sl_crc)) || -	    !xfs_symlink_verify(bp)) { -		XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); +	if (!xfs_buf_verify_cksum(bp, XFS_SYMLINK_CRC_OFF)) +		xfs_buf_ioerror(bp, EFSBADCRC); +	else if (!xfs_symlink_verify(bp))  		xfs_buf_ioerror(bp, EFSCORRUPTED); -	} + +	if (bp->b_error) +		xfs_verifier_error(bp);  }  static void @@ -151,8 +153,8 @@ xfs_symlink_write_verify(  		return;  	if (!xfs_symlink_verify(bp)) { -		XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr);  		xfs_buf_ioerror(bp, EFSCORRUPTED); +		xfs_verifier_error(bp);  		return;  	} @@ -160,8 +162,7 @@ xfs_symlink_write_verify(  		struct xfs_dsymlink_hdr *dsl = bp->b_addr;  		dsl->sl_lsn = cpu_to_be64(bip->bli_item.li_lsn);  	} -	xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), -			 offsetof(struct xfs_dsymlink_hdr, sl_crc)); +	xfs_buf_update_cksum(bp, XFS_SYMLINK_CRC_OFF);  }  const struct xfs_buf_ops xfs_symlink_buf_ops = {  | 
