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

Commit fe22d552 authored by Dave Chinner's avatar Dave Chinner Committed by Dave Chinner
Browse files

xfs: set buf types when converting extent formats



Conversion from local to extent format does not set the buffer type
correctly on the new extent buffer when a symlink data is moved out
of line.

Fix the symlink code and leave a comment in the generic bmap code
reminding us that the format-specific data copy needs to set the
destination buffer type appropriately.

cc: <stable@vger.kernel.org> # 3.10 to current
Tested-by: default avatarJan Kara <jack@suse.cz>
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 f19b872b
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -973,7 +973,11 @@ xfs_bmap_local_to_extents(
	*firstblock = args.fsbno;
	bp = xfs_btree_get_bufl(args.mp, tp, args.fsbno, 0);

	/* initialise the block and copy the data */
	/*
	 * Initialise the block and copy the data
	 *
	 * Note: init_fn must set the buffer log item type correctly!
	 */
	init_fn(tp, bp, ip, ifp);

	/* account for the change in fork size and log everything */
+2 −0
Original line number Diff line number Diff line
@@ -178,6 +178,8 @@ xfs_symlink_local_to_remote(
	struct xfs_mount	*mp = ip->i_mount;
	char			*buf;

	xfs_trans_buf_set_type(tp, bp, XFS_BLFT_SYMLINK_BUF);

	if (!xfs_sb_version_hascrc(&mp->m_sb)) {
		bp->b_ops = NULL;
		memcpy(bp->b_addr, ifp->if_u1.if_data, ifp->if_bytes);