diff options
| author | Dave Chinner <dchinner@redhat.com> | 2013-04-03 16:11:30 +1100 | 
|---|---|---|
| committer | Ben Myers <bpm@sgi.com> | 2013-04-27 13:01:58 -0500 | 
| commit | 61fe135c1dde112f483bba01d645debd881b5428 (patch) | |
| tree | 6ec57ed9730f555b29b94aeb6983b4ddbebffe51 /fs/xfs/xfs_attr_leaf.c | |
| parent | d75afeb3d302019527331520a2632b6614425b40 (diff) | |
| download | olio-linux-3.10-61fe135c1dde112f483bba01d645debd881b5428.tar.xz olio-linux-3.10-61fe135c1dde112f483bba01d645debd881b5428.zip  | |
xfs: buffer type overruns blf_flags field
The buffer type passed to log recvoery in the buffer log item
overruns the blf_flags field. I had assumed that flags field was a
32 bit value, and it turns out it is a unisgned short. Therefore
having 19 flags doesn't really work.
Convert the buffer type field to numeric value, and use the top 5
bits of the flags field for it. We currently have 17 types of
buffers, so using 5 bits gives us plenty of room for expansion in
future....
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Ben Myers <bpm@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_attr_leaf.c')
| -rw-r--r-- | fs/xfs/xfs_attr_leaf.c | 6 | 
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index 92cda03d1c0..08d5457c948 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c @@ -276,7 +276,7 @@ xfs_attr3_leaf_read(  	err = xfs_da_read_buf(tp, dp, bno, mappedbno, bpp,  				XFS_ATTR_FORK, &xfs_attr3_leaf_buf_ops);  	if (!err && tp) -		xfs_trans_buf_set_type(tp, *bpp, XFS_BLF_ATTR_LEAF_BUF); +		xfs_trans_buf_set_type(tp, *bpp, XFS_BLFT_ATTR_LEAF_BUF);  	return err;  } @@ -1083,7 +1083,7 @@ xfs_attr3_leaf_to_node(  		goto out;  	/* copy leaf to new buffer, update identifiers */ -	xfs_trans_buf_set_type(args->trans, bp2, XFS_BLF_ATTR_LEAF_BUF); +	xfs_trans_buf_set_type(args->trans, bp2, XFS_BLFT_ATTR_LEAF_BUF);  	bp2->b_ops = bp1->b_ops;  	memcpy(bp2->b_addr, bp1->b_addr, XFS_LBSIZE(mp));  	if (xfs_sb_version_hascrc(&mp->m_sb)) { @@ -1146,7 +1146,7 @@ xfs_attr3_leaf_create(  	if (error)  		return error;  	bp->b_ops = &xfs_attr3_leaf_buf_ops; -	xfs_trans_buf_set_type(args->trans, bp, XFS_BLF_ATTR_LEAF_BUF); +	xfs_trans_buf_set_type(args->trans, bp, XFS_BLFT_ATTR_LEAF_BUF);  	leaf = bp->b_addr;  	memset(leaf, 0, XFS_LBSIZE(mp));  |