aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_dir2_block.c
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2013-04-03 01:11:29 -0400
committerBen Myers <bpm@sgi.com>2013-04-27 14:01:06 -0400
commitd75afeb3d302019527331520a2632b6614425b40 (patch)
tree181dec415cdae00398086764a6229d115114354d /fs/xfs/xfs_dir2_block.c
parentd2e448d5fdebdcda93ed171339a3d864f65c227e (diff)
xfs: add buffer types to directory and attribute buffers
Add buffer types to the buffer log items so that log recovery can validate the buffers and calculate CRCs correctly after the buffers are recovered. 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_dir2_block.c')
-rw-r--r--fs/xfs/xfs_dir2_block.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c
index d2e445f92ffb..58816ecdbba5 100644
--- a/fs/xfs/xfs_dir2_block.c
+++ b/fs/xfs/xfs_dir2_block.c
@@ -132,20 +132,26 @@ xfs_dir3_block_read(
132 struct xfs_buf **bpp) 132 struct xfs_buf **bpp)
133{ 133{
134 struct xfs_mount *mp = dp->i_mount; 134 struct xfs_mount *mp = dp->i_mount;
135 int err;
135 136
136 return xfs_da_read_buf(tp, dp, mp->m_dirdatablk, -1, bpp, 137 err = xfs_da_read_buf(tp, dp, mp->m_dirdatablk, -1, bpp,
137 XFS_DATA_FORK, &xfs_dir3_block_buf_ops); 138 XFS_DATA_FORK, &xfs_dir3_block_buf_ops);
139 if (!err && tp)
140 xfs_trans_buf_set_type(tp, *bpp, XFS_BLF_DIR_BLOCK_BUF);
141 return err;
138} 142}
139 143
140static void 144static void
141xfs_dir3_block_init( 145xfs_dir3_block_init(
142 struct xfs_mount *mp, 146 struct xfs_mount *mp,
147 struct xfs_trans *tp,
143 struct xfs_buf *bp, 148 struct xfs_buf *bp,
144 struct xfs_inode *dp) 149 struct xfs_inode *dp)
145{ 150{
146 struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; 151 struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr;
147 152
148 bp->b_ops = &xfs_dir3_block_buf_ops; 153 bp->b_ops = &xfs_dir3_block_buf_ops;
154 xfs_trans_buf_set_type(tp, bp, XFS_BLF_DIR_BLOCK_BUF);
149 155
150 if (xfs_sb_version_hascrc(&mp->m_sb)) { 156 if (xfs_sb_version_hascrc(&mp->m_sb)) {
151 memset(hdr3, 0, sizeof(*hdr3)); 157 memset(hdr3, 0, sizeof(*hdr3));
@@ -1080,7 +1086,7 @@ xfs_dir2_leaf_to_block(
1080 /* 1086 /*
1081 * Start converting it to block form. 1087 * Start converting it to block form.
1082 */ 1088 */
1083 xfs_dir3_block_init(mp, dbp, dp); 1089 xfs_dir3_block_init(mp, tp, dbp, dp);
1084 1090
1085 needlog = 1; 1091 needlog = 1;
1086 needscan = 0; 1092 needscan = 0;
@@ -1209,7 +1215,7 @@ xfs_dir2_sf_to_block(
1209 kmem_free(sfp); 1215 kmem_free(sfp);
1210 return error; 1216 return error;
1211 } 1217 }
1212 xfs_dir3_block_init(mp, bp, dp); 1218 xfs_dir3_block_init(mp, tp, bp, dp);
1213 hdr = bp->b_addr; 1219 hdr = bp->b_addr;
1214 1220
1215 /* 1221 /*