Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2451337d authored by Dave Chinner's avatar Dave Chinner Committed by Dave Chinner
Browse files

xfs: global error sign conversion



Convert all the errors the core XFs code to negative error signs
like the rest of the kernel and remove all the sign conversion we
do in the interface layers.

Errors for conversion (and comparison) found via searches like:

$ git grep " E" fs/xfs
$ git grep "return E" fs/xfs
$ git grep " E[A-Z].*;$" fs/xfs

Negation points found via searches like:

$ git grep "= -[a-z,A-Z]" fs/xfs
$ git grep "return -[a-z,A-D,F-Z]" fs/xfs
$ git grep " -[a-z].*;" fs/xfs

[ with some bits I missed from Brian Foster ]

Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
parent 30f712c9
Loading
Loading
Loading
Loading
+10 −10
Original line number Original line Diff line number Diff line
@@ -483,9 +483,9 @@ xfs_agfl_read_verify(
		return;
		return;


	if (!xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF))
	if (!xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF))
		xfs_buf_ioerror(bp, EFSBADCRC);
		xfs_buf_ioerror(bp, -EFSBADCRC);
	else if (!xfs_agfl_verify(bp))
	else if (!xfs_agfl_verify(bp))
		xfs_buf_ioerror(bp, EFSCORRUPTED);
		xfs_buf_ioerror(bp, -EFSCORRUPTED);


	if (bp->b_error)
	if (bp->b_error)
		xfs_verifier_error(bp);
		xfs_verifier_error(bp);
@@ -503,7 +503,7 @@ xfs_agfl_write_verify(
		return;
		return;


	if (!xfs_agfl_verify(bp)) {
	if (!xfs_agfl_verify(bp)) {
		xfs_buf_ioerror(bp, EFSCORRUPTED);
		xfs_buf_ioerror(bp, -EFSCORRUPTED);
		xfs_verifier_error(bp);
		xfs_verifier_error(bp);
		return;
		return;
	}
	}
@@ -559,7 +559,7 @@ xfs_alloc_update_counters(
	xfs_trans_agblocks_delta(tp, len);
	xfs_trans_agblocks_delta(tp, len);
	if (unlikely(be32_to_cpu(agf->agf_freeblks) >
	if (unlikely(be32_to_cpu(agf->agf_freeblks) >
		     be32_to_cpu(agf->agf_length)))
		     be32_to_cpu(agf->agf_length)))
		return EFSCORRUPTED;
		return -EFSCORRUPTED;


	xfs_alloc_log_agf(tp, agbp, XFS_AGF_FREEBLKS);
	xfs_alloc_log_agf(tp, agbp, XFS_AGF_FREEBLKS);
	return 0;
	return 0;
@@ -2234,11 +2234,11 @@ xfs_agf_read_verify(


	if (xfs_sb_version_hascrc(&mp->m_sb) &&
	if (xfs_sb_version_hascrc(&mp->m_sb) &&
	    !xfs_buf_verify_cksum(bp, XFS_AGF_CRC_OFF))
	    !xfs_buf_verify_cksum(bp, XFS_AGF_CRC_OFF))
		xfs_buf_ioerror(bp, EFSBADCRC);
		xfs_buf_ioerror(bp, -EFSBADCRC);
	else if (XFS_TEST_ERROR(!xfs_agf_verify(mp, bp), mp,
	else if (XFS_TEST_ERROR(!xfs_agf_verify(mp, bp), mp,
				XFS_ERRTAG_ALLOC_READ_AGF,
				XFS_ERRTAG_ALLOC_READ_AGF,
				XFS_RANDOM_ALLOC_READ_AGF))
				XFS_RANDOM_ALLOC_READ_AGF))
		xfs_buf_ioerror(bp, EFSCORRUPTED);
		xfs_buf_ioerror(bp, -EFSCORRUPTED);


	if (bp->b_error)
	if (bp->b_error)
		xfs_verifier_error(bp);
		xfs_verifier_error(bp);
@@ -2252,7 +2252,7 @@ xfs_agf_write_verify(
	struct xfs_buf_log_item	*bip = bp->b_fspriv;
	struct xfs_buf_log_item	*bip = bp->b_fspriv;


	if (!xfs_agf_verify(mp, bp)) {
	if (!xfs_agf_verify(mp, bp)) {
		xfs_buf_ioerror(bp, EFSCORRUPTED);
		xfs_buf_ioerror(bp, -EFSCORRUPTED);
		xfs_verifier_error(bp);
		xfs_verifier_error(bp);
		return;
		return;
	}
	}
@@ -2601,11 +2601,11 @@ xfs_free_extent(
	 */
	 */
	args.agno = XFS_FSB_TO_AGNO(args.mp, bno);
	args.agno = XFS_FSB_TO_AGNO(args.mp, bno);
	if (args.agno >= args.mp->m_sb.sb_agcount)
	if (args.agno >= args.mp->m_sb.sb_agcount)
		return EFSCORRUPTED;
		return -EFSCORRUPTED;


	args.agbno = XFS_FSB_TO_AGBNO(args.mp, bno);
	args.agbno = XFS_FSB_TO_AGBNO(args.mp, bno);
	if (args.agbno >= args.mp->m_sb.sb_agblocks)
	if (args.agbno >= args.mp->m_sb.sb_agblocks)
		return EFSCORRUPTED;
		return -EFSCORRUPTED;


	args.pag = xfs_perag_get(args.mp, args.agno);
	args.pag = xfs_perag_get(args.mp, args.agno);
	ASSERT(args.pag);
	ASSERT(args.pag);
@@ -2617,7 +2617,7 @@ xfs_free_extent(
	/* validate the extent size is legal now we have the agf locked */
	/* validate the extent size is legal now we have the agf locked */
	if (args.agbno + len >
	if (args.agbno + len >
			be32_to_cpu(XFS_BUF_TO_AGF(args.agbp)->agf_length)) {
			be32_to_cpu(XFS_BUF_TO_AGF(args.agbp)->agf_length)) {
		error = EFSCORRUPTED;
		error = -EFSCORRUPTED;
		goto error0;
		goto error0;
	}
	}


+3 −3
Original line number Original line Diff line number Diff line
@@ -355,9 +355,9 @@ xfs_allocbt_read_verify(
	struct xfs_buf	*bp)
	struct xfs_buf	*bp)
{
{
	if (!xfs_btree_sblock_verify_crc(bp))
	if (!xfs_btree_sblock_verify_crc(bp))
		xfs_buf_ioerror(bp, EFSBADCRC);
		xfs_buf_ioerror(bp, -EFSBADCRC);
	else if (!xfs_allocbt_verify(bp))
	else if (!xfs_allocbt_verify(bp))
		xfs_buf_ioerror(bp, EFSCORRUPTED);
		xfs_buf_ioerror(bp, -EFSCORRUPTED);


	if (bp->b_error) {
	if (bp->b_error) {
		trace_xfs_btree_corrupt(bp, _RET_IP_);
		trace_xfs_btree_corrupt(bp, _RET_IP_);
@@ -371,7 +371,7 @@ xfs_allocbt_write_verify(
{
{
	if (!xfs_allocbt_verify(bp)) {
	if (!xfs_allocbt_verify(bp)) {
		trace_xfs_btree_corrupt(bp, _RET_IP_);
		trace_xfs_btree_corrupt(bp, _RET_IP_);
		xfs_buf_ioerror(bp, EFSCORRUPTED);
		xfs_buf_ioerror(bp, -EFSCORRUPTED);
		xfs_verifier_error(bp);
		xfs_verifier_error(bp);
		return;
		return;
	}
	}
+25 −25
Original line number Original line Diff line number Diff line
@@ -85,7 +85,7 @@ xfs_attr_args_init(
{
{


	if (!name)
	if (!name)
		return EINVAL;
		return -EINVAL;


	memset(args, 0, sizeof(*args));
	memset(args, 0, sizeof(*args));
	args->geo = dp->i_mount->m_attr_geo;
	args->geo = dp->i_mount->m_attr_geo;
@@ -95,7 +95,7 @@ xfs_attr_args_init(
	args->name = name;
	args->name = name;
	args->namelen = strlen((const char *)name);
	args->namelen = strlen((const char *)name);
	if (args->namelen >= MAXNAMELEN)
	if (args->namelen >= MAXNAMELEN)
		return EFAULT;		/* match IRIX behaviour */
		return -EFAULT;		/* match IRIX behaviour */


	args->hashval = xfs_da_hashname(args->name, args->namelen);
	args->hashval = xfs_da_hashname(args->name, args->namelen);
	return 0;
	return 0;
@@ -131,10 +131,10 @@ xfs_attr_get(
	XFS_STATS_INC(xs_attr_get);
	XFS_STATS_INC(xs_attr_get);


	if (XFS_FORCED_SHUTDOWN(ip->i_mount))
	if (XFS_FORCED_SHUTDOWN(ip->i_mount))
		return EIO;
		return -EIO;


	if (!xfs_inode_hasattr(ip))
	if (!xfs_inode_hasattr(ip))
		return ENOATTR;
		return -ENOATTR;


	error = xfs_attr_args_init(&args, ip, name, flags);
	error = xfs_attr_args_init(&args, ip, name, flags);
	if (error)
	if (error)
@@ -145,7 +145,7 @@ xfs_attr_get(


	lock_mode = xfs_ilock_attr_map_shared(ip);
	lock_mode = xfs_ilock_attr_map_shared(ip);
	if (!xfs_inode_hasattr(ip))
	if (!xfs_inode_hasattr(ip))
		error = ENOATTR;
		error = -ENOATTR;
	else if (ip->i_d.di_aformat == XFS_DINODE_FMT_LOCAL)
	else if (ip->i_d.di_aformat == XFS_DINODE_FMT_LOCAL)
		error = xfs_attr_shortform_getvalue(&args);
		error = xfs_attr_shortform_getvalue(&args);
	else if (xfs_bmap_one_block(ip, XFS_ATTR_FORK))
	else if (xfs_bmap_one_block(ip, XFS_ATTR_FORK))
@@ -155,7 +155,7 @@ xfs_attr_get(
	xfs_iunlock(ip, lock_mode);
	xfs_iunlock(ip, lock_mode);


	*valuelenp = args.valuelen;
	*valuelenp = args.valuelen;
	return error == EEXIST ? 0 : error;
	return error == -EEXIST ? 0 : error;
}
}


/*
/*
@@ -213,7 +213,7 @@ xfs_attr_set(
	XFS_STATS_INC(xs_attr_set);
	XFS_STATS_INC(xs_attr_set);


	if (XFS_FORCED_SHUTDOWN(dp->i_mount))
	if (XFS_FORCED_SHUTDOWN(dp->i_mount))
		return EIO;
		return -EIO;


	error = xfs_attr_args_init(&args, dp, name, flags);
	error = xfs_attr_args_init(&args, dp, name, flags);
	if (error)
	if (error)
@@ -304,7 +304,7 @@ xfs_attr_set(
		 * the inode.
		 * the inode.
		 */
		 */
		error = xfs_attr_shortform_addname(&args);
		error = xfs_attr_shortform_addname(&args);
		if (error != ENOSPC) {
		if (error != -ENOSPC) {
			/*
			/*
			 * Commit the shortform mods, and we're done.
			 * Commit the shortform mods, and we're done.
			 * NOTE: this is also the error path (EEXIST, etc).
			 * NOTE: this is also the error path (EEXIST, etc).
@@ -419,10 +419,10 @@ xfs_attr_remove(
	XFS_STATS_INC(xs_attr_remove);
	XFS_STATS_INC(xs_attr_remove);


	if (XFS_FORCED_SHUTDOWN(dp->i_mount))
	if (XFS_FORCED_SHUTDOWN(dp->i_mount))
		return EIO;
		return -EIO;


	if (!xfs_inode_hasattr(dp))
	if (!xfs_inode_hasattr(dp))
		return ENOATTR;
		return -ENOATTR;


	error = xfs_attr_args_init(&args, dp, name, flags);
	error = xfs_attr_args_init(&args, dp, name, flags);
	if (error)
	if (error)
@@ -477,7 +477,7 @@ xfs_attr_remove(
	xfs_trans_ijoin(args.trans, dp, 0);
	xfs_trans_ijoin(args.trans, dp, 0);


	if (!xfs_inode_hasattr(dp)) {
	if (!xfs_inode_hasattr(dp)) {
		error = ENOATTR;
		error = -ENOATTR;
	} else if (dp->i_d.di_aformat == XFS_DINODE_FMT_LOCAL) {
	} else if (dp->i_d.di_aformat == XFS_DINODE_FMT_LOCAL) {
		ASSERT(dp->i_afp->if_flags & XFS_IFINLINE);
		ASSERT(dp->i_afp->if_flags & XFS_IFINLINE);
		error = xfs_attr_shortform_remove(&args);
		error = xfs_attr_shortform_remove(&args);
@@ -534,9 +534,9 @@ xfs_attr_shortform_addname(xfs_da_args_t *args)
	trace_xfs_attr_sf_addname(args);
	trace_xfs_attr_sf_addname(args);


	retval = xfs_attr_shortform_lookup(args);
	retval = xfs_attr_shortform_lookup(args);
	if ((args->flags & ATTR_REPLACE) && (retval == ENOATTR)) {
	if ((args->flags & ATTR_REPLACE) && (retval == -ENOATTR)) {
		return retval;
		return retval;
	} else if (retval == EEXIST) {
	} else if (retval == -EEXIST) {
		if (args->flags & ATTR_CREATE)
		if (args->flags & ATTR_CREATE)
			return retval;
			return retval;
		retval = xfs_attr_shortform_remove(args);
		retval = xfs_attr_shortform_remove(args);
@@ -545,14 +545,14 @@ xfs_attr_shortform_addname(xfs_da_args_t *args)


	if (args->namelen >= XFS_ATTR_SF_ENTSIZE_MAX ||
	if (args->namelen >= XFS_ATTR_SF_ENTSIZE_MAX ||
	    args->valuelen >= XFS_ATTR_SF_ENTSIZE_MAX)
	    args->valuelen >= XFS_ATTR_SF_ENTSIZE_MAX)
		return ENOSPC;
		return -ENOSPC;


	newsize = XFS_ATTR_SF_TOTSIZE(args->dp);
	newsize = XFS_ATTR_SF_TOTSIZE(args->dp);
	newsize += XFS_ATTR_SF_ENTSIZE_BYNAME(args->namelen, args->valuelen);
	newsize += XFS_ATTR_SF_ENTSIZE_BYNAME(args->namelen, args->valuelen);


	forkoff = xfs_attr_shortform_bytesfit(args->dp, newsize);
	forkoff = xfs_attr_shortform_bytesfit(args->dp, newsize);
	if (!forkoff)
	if (!forkoff)
		return ENOSPC;
		return -ENOSPC;


	xfs_attr_shortform_add(args, forkoff);
	xfs_attr_shortform_add(args, forkoff);
	return 0;
	return 0;
@@ -592,10 +592,10 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)
	 * the given flags produce an error or call for an atomic rename.
	 * the given flags produce an error or call for an atomic rename.
	 */
	 */
	retval = xfs_attr3_leaf_lookup_int(bp, args);
	retval = xfs_attr3_leaf_lookup_int(bp, args);
	if ((args->flags & ATTR_REPLACE) && (retval == ENOATTR)) {
	if ((args->flags & ATTR_REPLACE) && (retval == -ENOATTR)) {
		xfs_trans_brelse(args->trans, bp);
		xfs_trans_brelse(args->trans, bp);
		return retval;
		return retval;
	} else if (retval == EEXIST) {
	} else if (retval == -EEXIST) {
		if (args->flags & ATTR_CREATE) {	/* pure create op */
		if (args->flags & ATTR_CREATE) {	/* pure create op */
			xfs_trans_brelse(args->trans, bp);
			xfs_trans_brelse(args->trans, bp);
			return retval;
			return retval;
@@ -626,7 +626,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)
	 * if required.
	 * if required.
	 */
	 */
	retval = xfs_attr3_leaf_add(bp, args);
	retval = xfs_attr3_leaf_add(bp, args);
	if (retval == ENOSPC) {
	if (retval == -ENOSPC) {
		/*
		/*
		 * Promote the attribute list to the Btree format, then
		 * Promote the attribute list to the Btree format, then
		 * Commit that transaction so that the node_addname() call
		 * Commit that transaction so that the node_addname() call
@@ -795,7 +795,7 @@ xfs_attr_leaf_removename(xfs_da_args_t *args)
		return error;
		return error;


	error = xfs_attr3_leaf_lookup_int(bp, args);
	error = xfs_attr3_leaf_lookup_int(bp, args);
	if (error == ENOATTR) {
	if (error == -ENOATTR) {
		xfs_trans_brelse(args->trans, bp);
		xfs_trans_brelse(args->trans, bp);
		return error;
		return error;
	}
	}
@@ -850,7 +850,7 @@ xfs_attr_leaf_get(xfs_da_args_t *args)
		return error;
		return error;


	error = xfs_attr3_leaf_lookup_int(bp, args);
	error = xfs_attr3_leaf_lookup_int(bp, args);
	if (error != EEXIST)  {
	if (error != -EEXIST)  {
		xfs_trans_brelse(args->trans, bp);
		xfs_trans_brelse(args->trans, bp);
		return error;
		return error;
	}
	}
@@ -906,9 +906,9 @@ xfs_attr_node_addname(xfs_da_args_t *args)
		goto out;
		goto out;
	blk = &state->path.blk[ state->path.active-1 ];
	blk = &state->path.blk[ state->path.active-1 ];
	ASSERT(blk->magic == XFS_ATTR_LEAF_MAGIC);
	ASSERT(blk->magic == XFS_ATTR_LEAF_MAGIC);
	if ((args->flags & ATTR_REPLACE) && (retval == ENOATTR)) {
	if ((args->flags & ATTR_REPLACE) && (retval == -ENOATTR)) {
		goto out;
		goto out;
	} else if (retval == EEXIST) {
	} else if (retval == -EEXIST) {
		if (args->flags & ATTR_CREATE)
		if (args->flags & ATTR_CREATE)
			goto out;
			goto out;


@@ -933,7 +933,7 @@ xfs_attr_node_addname(xfs_da_args_t *args)
	}
	}


	retval = xfs_attr3_leaf_add(blk->bp, state->args);
	retval = xfs_attr3_leaf_add(blk->bp, state->args);
	if (retval == ENOSPC) {
	if (retval == -ENOSPC) {
		if (state->path.active == 1) {
		if (state->path.active == 1) {
			/*
			/*
			 * Its really a single leaf node, but it had
			 * Its really a single leaf node, but it had
@@ -1168,7 +1168,7 @@ xfs_attr_node_removename(xfs_da_args_t *args)
	 * Search to see if name exists, and get back a pointer to it.
	 * Search to see if name exists, and get back a pointer to it.
	 */
	 */
	error = xfs_da3_node_lookup_int(state, &retval);
	error = xfs_da3_node_lookup_int(state, &retval);
	if (error || (retval != EEXIST)) {
	if (error || (retval != -EEXIST)) {
		if (error == 0)
		if (error == 0)
			error = retval;
			error = retval;
		goto out;
		goto out;
@@ -1431,7 +1431,7 @@ xfs_attr_node_get(xfs_da_args_t *args)
	error = xfs_da3_node_lookup_int(state, &retval);
	error = xfs_da3_node_lookup_int(state, &retval);
	if (error) {
	if (error) {
		retval = error;
		retval = error;
	} else if (retval == EEXIST) {
	} else if (retval == -EEXIST) {
		blk = &state->path.blk[ state->path.active-1 ];
		blk = &state->path.blk[ state->path.active-1 ];
		ASSERT(blk->bp != NULL);
		ASSERT(blk->bp != NULL);
		ASSERT(blk->magic == XFS_ATTR_LEAF_MAGIC);
		ASSERT(blk->magic == XFS_ATTR_LEAF_MAGIC);
+22 −22
Original line number Original line Diff line number Diff line
@@ -214,7 +214,7 @@ xfs_attr3_leaf_write_verify(
	struct xfs_attr3_leaf_hdr *hdr3 = bp->b_addr;
	struct xfs_attr3_leaf_hdr *hdr3 = bp->b_addr;


	if (!xfs_attr3_leaf_verify(bp)) {
	if (!xfs_attr3_leaf_verify(bp)) {
		xfs_buf_ioerror(bp, EFSCORRUPTED);
		xfs_buf_ioerror(bp, -EFSCORRUPTED);
		xfs_verifier_error(bp);
		xfs_verifier_error(bp);
		return;
		return;
	}
	}
@@ -242,9 +242,9 @@ xfs_attr3_leaf_read_verify(


	if (xfs_sb_version_hascrc(&mp->m_sb) &&
	if (xfs_sb_version_hascrc(&mp->m_sb) &&
	     !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF))
	     !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF))
		xfs_buf_ioerror(bp, EFSBADCRC);
		xfs_buf_ioerror(bp, -EFSBADCRC);
	else if (!xfs_attr3_leaf_verify(bp))
	else if (!xfs_attr3_leaf_verify(bp))
		xfs_buf_ioerror(bp, EFSCORRUPTED);
		xfs_buf_ioerror(bp, -EFSCORRUPTED);


	if (bp->b_error)
	if (bp->b_error)
		xfs_verifier_error(bp);
		xfs_verifier_error(bp);
@@ -547,7 +547,7 @@ xfs_attr_shortform_remove(xfs_da_args_t *args)
		break;
		break;
	}
	}
	if (i == end)
	if (i == end)
		return ENOATTR;
		return -ENOATTR;


	/*
	/*
	 * Fix up the attribute fork data, covering the hole
	 * Fix up the attribute fork data, covering the hole
@@ -611,9 +611,9 @@ xfs_attr_shortform_lookup(xfs_da_args_t *args)
			continue;
			continue;
		if (!xfs_attr_namesp_match(args->flags, sfe->flags))
		if (!xfs_attr_namesp_match(args->flags, sfe->flags))
			continue;
			continue;
		return EEXIST;
		return -EEXIST;
	}
	}
	return ENOATTR;
	return -ENOATTR;
}
}


/*
/*
@@ -640,18 +640,18 @@ xfs_attr_shortform_getvalue(xfs_da_args_t *args)
			continue;
			continue;
		if (args->flags & ATTR_KERNOVAL) {
		if (args->flags & ATTR_KERNOVAL) {
			args->valuelen = sfe->valuelen;
			args->valuelen = sfe->valuelen;
			return EEXIST;
			return -EEXIST;
		}
		}
		if (args->valuelen < sfe->valuelen) {
		if (args->valuelen < sfe->valuelen) {
			args->valuelen = sfe->valuelen;
			args->valuelen = sfe->valuelen;
			return ERANGE;
			return -ERANGE;
		}
		}
		args->valuelen = sfe->valuelen;
		args->valuelen = sfe->valuelen;
		memcpy(args->value, &sfe->nameval[args->namelen],
		memcpy(args->value, &sfe->nameval[args->namelen],
						    args->valuelen);
						    args->valuelen);
		return EEXIST;
		return -EEXIST;
	}
	}
	return ENOATTR;
	return -ENOATTR;
}
}


/*
/*
@@ -691,7 +691,7 @@ xfs_attr_shortform_to_leaf(xfs_da_args_t *args)
		 * If we hit an IO error middle of the transaction inside
		 * If we hit an IO error middle of the transaction inside
		 * grow_inode(), we may have inconsistent data. Bail out.
		 * grow_inode(), we may have inconsistent data. Bail out.
		 */
		 */
		if (error == EIO)
		if (error == -EIO)
			goto out;
			goto out;
		xfs_idata_realloc(dp, size, XFS_ATTR_FORK);	/* try to put */
		xfs_idata_realloc(dp, size, XFS_ATTR_FORK);	/* try to put */
		memcpy(ifp->if_u1.if_data, tmpbuffer, size);	/* it back */
		memcpy(ifp->if_u1.if_data, tmpbuffer, size);	/* it back */
@@ -730,9 +730,9 @@ xfs_attr_shortform_to_leaf(xfs_da_args_t *args)
						sfe->namelen);
						sfe->namelen);
		nargs.flags = XFS_ATTR_NSP_ONDISK_TO_ARGS(sfe->flags);
		nargs.flags = XFS_ATTR_NSP_ONDISK_TO_ARGS(sfe->flags);
		error = xfs_attr3_leaf_lookup_int(bp, &nargs); /* set a->index */
		error = xfs_attr3_leaf_lookup_int(bp, &nargs); /* set a->index */
		ASSERT(error == ENOATTR);
		ASSERT(error == -ENOATTR);
		error = xfs_attr3_leaf_add(bp, &nargs);
		error = xfs_attr3_leaf_add(bp, &nargs);
		ASSERT(error != ENOSPC);
		ASSERT(error != -ENOSPC);
		if (error)
		if (error)
			goto out;
			goto out;
		sfe = XFS_ATTR_SF_NEXTENTRY(sfe);
		sfe = XFS_ATTR_SF_NEXTENTRY(sfe);
@@ -809,7 +809,7 @@ xfs_attr3_leaf_to_shortform(


	tmpbuffer = kmem_alloc(args->geo->blksize, KM_SLEEP);
	tmpbuffer = kmem_alloc(args->geo->blksize, KM_SLEEP);
	if (!tmpbuffer)
	if (!tmpbuffer)
		return ENOMEM;
		return -ENOMEM;


	memcpy(tmpbuffer, bp->b_addr, args->geo->blksize);
	memcpy(tmpbuffer, bp->b_addr, args->geo->blksize);


@@ -1108,7 +1108,7 @@ xfs_attr3_leaf_add(
	 * no good and we should just give up.
	 * no good and we should just give up.
	 */
	 */
	if (!ichdr.holes && sum < entsize)
	if (!ichdr.holes && sum < entsize)
		return ENOSPC;
		return -ENOSPC;


	/*
	/*
	 * Compact the entries to coalesce free space.
	 * Compact the entries to coalesce free space.
@@ -1121,7 +1121,7 @@ xfs_attr3_leaf_add(
	 * free region, in freemap[0].  If it is not big enough, give up.
	 * free region, in freemap[0].  If it is not big enough, give up.
	 */
	 */
	if (ichdr.freemap[0].size < (entsize + sizeof(xfs_attr_leaf_entry_t))) {
	if (ichdr.freemap[0].size < (entsize + sizeof(xfs_attr_leaf_entry_t))) {
		tmp = ENOSPC;
		tmp = -ENOSPC;
		goto out_log_hdr;
		goto out_log_hdr;
	}
	}


@@ -2123,7 +2123,7 @@ xfs_attr3_leaf_lookup_int(
	}
	}
	if (probe == ichdr.count || be32_to_cpu(entry->hashval) != hashval) {
	if (probe == ichdr.count || be32_to_cpu(entry->hashval) != hashval) {
		args->index = probe;
		args->index = probe;
		return ENOATTR;
		return -ENOATTR;
	}
	}


	/*
	/*
@@ -2152,7 +2152,7 @@ xfs_attr3_leaf_lookup_int(
			if (!xfs_attr_namesp_match(args->flags, entry->flags))
			if (!xfs_attr_namesp_match(args->flags, entry->flags))
				continue;
				continue;
			args->index = probe;
			args->index = probe;
			return EEXIST;
			return -EEXIST;
		} else {
		} else {
			name_rmt = xfs_attr3_leaf_name_remote(leaf, probe);
			name_rmt = xfs_attr3_leaf_name_remote(leaf, probe);
			if (name_rmt->namelen != args->namelen)
			if (name_rmt->namelen != args->namelen)
@@ -2168,11 +2168,11 @@ xfs_attr3_leaf_lookup_int(
			args->rmtblkcnt = xfs_attr3_rmt_blocks(
			args->rmtblkcnt = xfs_attr3_rmt_blocks(
							args->dp->i_mount,
							args->dp->i_mount,
							args->rmtvaluelen);
							args->rmtvaluelen);
			return EEXIST;
			return -EEXIST;
		}
		}
	}
	}
	args->index = probe;
	args->index = probe;
	return ENOATTR;
	return -ENOATTR;
}
}


/*
/*
@@ -2208,7 +2208,7 @@ xfs_attr3_leaf_getvalue(
		}
		}
		if (args->valuelen < valuelen) {
		if (args->valuelen < valuelen) {
			args->valuelen = valuelen;
			args->valuelen = valuelen;
			return ERANGE;
			return -ERANGE;
		}
		}
		args->valuelen = valuelen;
		args->valuelen = valuelen;
		memcpy(args->value, &name_loc->nameval[args->namelen], valuelen);
		memcpy(args->value, &name_loc->nameval[args->namelen], valuelen);
@@ -2226,7 +2226,7 @@ xfs_attr3_leaf_getvalue(
		}
		}
		if (args->valuelen < args->rmtvaluelen) {
		if (args->valuelen < args->rmtvaluelen) {
			args->valuelen = args->rmtvaluelen;
			args->valuelen = args->rmtvaluelen;
			return ERANGE;
			return -ERANGE;
		}
		}
		args->valuelen = args->rmtvaluelen;
		args->valuelen = args->rmtvaluelen;
	}
	}
+5 −5
Original line number Original line Diff line number Diff line
@@ -138,11 +138,11 @@ xfs_attr3_rmt_read_verify(


	while (len > 0) {
	while (len > 0) {
		if (!xfs_verify_cksum(ptr, blksize, XFS_ATTR3_RMT_CRC_OFF)) {
		if (!xfs_verify_cksum(ptr, blksize, XFS_ATTR3_RMT_CRC_OFF)) {
			xfs_buf_ioerror(bp, EFSBADCRC);
			xfs_buf_ioerror(bp, -EFSBADCRC);
			break;
			break;
		}
		}
		if (!xfs_attr3_rmt_verify(mp, ptr, blksize, bno)) {
		if (!xfs_attr3_rmt_verify(mp, ptr, blksize, bno)) {
			xfs_buf_ioerror(bp, EFSCORRUPTED);
			xfs_buf_ioerror(bp, -EFSCORRUPTED);
			break;
			break;
		}
		}
		len -= blksize;
		len -= blksize;
@@ -178,7 +178,7 @@ xfs_attr3_rmt_write_verify(


	while (len > 0) {
	while (len > 0) {
		if (!xfs_attr3_rmt_verify(mp, ptr, blksize, bno)) {
		if (!xfs_attr3_rmt_verify(mp, ptr, blksize, bno)) {
			xfs_buf_ioerror(bp, EFSCORRUPTED);
			xfs_buf_ioerror(bp, -EFSCORRUPTED);
			xfs_verifier_error(bp);
			xfs_verifier_error(bp);
			return;
			return;
		}
		}
@@ -257,7 +257,7 @@ xfs_attr_rmtval_copyout(
				xfs_alert(mp,
				xfs_alert(mp,
"remote attribute header mismatch bno/off/len/owner (0x%llx/0x%x/Ox%x/0x%llx)",
"remote attribute header mismatch bno/off/len/owner (0x%llx/0x%x/Ox%x/0x%llx)",
					bno, *offset, byte_cnt, ino);
					bno, *offset, byte_cnt, ino);
				return EFSCORRUPTED;
				return -EFSCORRUPTED;
			}
			}
			hdr_size = sizeof(struct xfs_attr3_rmt_hdr);
			hdr_size = sizeof(struct xfs_attr3_rmt_hdr);
		}
		}
@@ -508,7 +508,7 @@ xfs_attr_rmtval_set(


		bp = xfs_buf_get(mp->m_ddev_targp, dblkno, dblkcnt, 0);
		bp = xfs_buf_get(mp->m_ddev_targp, dblkno, dblkcnt, 0);
		if (!bp)
		if (!bp)
			return ENOMEM;
			return -ENOMEM;
		bp->b_ops = &xfs_attr3_rmt_buf_ops;
		bp->b_ops = &xfs_attr3_rmt_buf_ops;


		xfs_attr_rmtval_copyin(mp, bp, args->dp->i_ino, &offset,
		xfs_attr_rmtval_copyin(mp, bp, args->dp->i_ino, &offset,
Loading