diff options
Diffstat (limited to 'fs/ocfs2/suballoc.c')
-rw-r--r-- | fs/ocfs2/suballoc.c | 64 |
1 files changed, 10 insertions, 54 deletions
diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c index 19ba00f28547..d4babfba4f04 100644 --- a/fs/ocfs2/suballoc.c +++ b/fs/ocfs2/suballoc.c | |||
@@ -369,9 +369,7 @@ static int ocfs2_block_group_fill(handle_t *handle, | |||
369 | ocfs2_set_bit(0, (unsigned long *)bg->bg_bitmap); | 369 | ocfs2_set_bit(0, (unsigned long *)bg->bg_bitmap); |
370 | bg->bg_free_bits_count = cpu_to_le16(le16_to_cpu(bg->bg_bits) - 1); | 370 | bg->bg_free_bits_count = cpu_to_le16(le16_to_cpu(bg->bg_bits) - 1); |
371 | 371 | ||
372 | status = ocfs2_journal_dirty(handle, bg_bh); | 372 | ocfs2_journal_dirty(handle, bg_bh); |
373 | if (status < 0) | ||
374 | mlog_errno(status); | ||
375 | 373 | ||
376 | /* There is no need to zero out or otherwise initialize the | 374 | /* There is no need to zero out or otherwise initialize the |
377 | * other blocks in a group - All valid FS metadata in a block | 375 | * other blocks in a group - All valid FS metadata in a block |
@@ -506,11 +504,7 @@ static int ocfs2_block_group_alloc(struct ocfs2_super *osb, | |||
506 | le32_add_cpu(&fe->id1.bitmap1.i_total, le16_to_cpu(bg->bg_bits)); | 504 | le32_add_cpu(&fe->id1.bitmap1.i_total, le16_to_cpu(bg->bg_bits)); |
507 | le32_add_cpu(&fe->i_clusters, le16_to_cpu(cl->cl_cpg)); | 505 | le32_add_cpu(&fe->i_clusters, le16_to_cpu(cl->cl_cpg)); |
508 | 506 | ||
509 | status = ocfs2_journal_dirty(handle, bh); | 507 | ocfs2_journal_dirty(handle, bh); |
510 | if (status < 0) { | ||
511 | mlog_errno(status); | ||
512 | goto bail; | ||
513 | } | ||
514 | 508 | ||
515 | spin_lock(&OCFS2_I(alloc_inode)->ip_lock); | 509 | spin_lock(&OCFS2_I(alloc_inode)->ip_lock); |
516 | OCFS2_I(alloc_inode)->ip_clusters = le32_to_cpu(fe->i_clusters); | 510 | OCFS2_I(alloc_inode)->ip_clusters = le32_to_cpu(fe->i_clusters); |
@@ -1129,16 +1123,10 @@ static inline int ocfs2_block_group_set_bits(handle_t *handle, | |||
1129 | } | 1123 | } |
1130 | 1124 | ||
1131 | le16_add_cpu(&bg->bg_free_bits_count, -num_bits); | 1125 | le16_add_cpu(&bg->bg_free_bits_count, -num_bits); |
1132 | |||
1133 | while(num_bits--) | 1126 | while(num_bits--) |
1134 | ocfs2_set_bit(bit_off++, bitmap); | 1127 | ocfs2_set_bit(bit_off++, bitmap); |
1135 | 1128 | ||
1136 | status = ocfs2_journal_dirty(handle, | 1129 | ocfs2_journal_dirty(handle, group_bh); |
1137 | group_bh); | ||
1138 | if (status < 0) { | ||
1139 | mlog_errno(status); | ||
1140 | goto bail; | ||
1141 | } | ||
1142 | 1130 | ||
1143 | bail: | 1131 | bail: |
1144 | mlog_exit(status); | 1132 | mlog_exit(status); |
@@ -1202,12 +1190,7 @@ static int ocfs2_relink_block_group(handle_t *handle, | |||
1202 | } | 1190 | } |
1203 | 1191 | ||
1204 | prev_bg->bg_next_group = bg->bg_next_group; | 1192 | prev_bg->bg_next_group = bg->bg_next_group; |
1205 | 1193 | ocfs2_journal_dirty(handle, prev_bg_bh); | |
1206 | status = ocfs2_journal_dirty(handle, prev_bg_bh); | ||
1207 | if (status < 0) { | ||
1208 | mlog_errno(status); | ||
1209 | goto out_rollback; | ||
1210 | } | ||
1211 | 1194 | ||
1212 | status = ocfs2_journal_access_gd(handle, INODE_CACHE(alloc_inode), | 1195 | status = ocfs2_journal_access_gd(handle, INODE_CACHE(alloc_inode), |
1213 | bg_bh, OCFS2_JOURNAL_ACCESS_WRITE); | 1196 | bg_bh, OCFS2_JOURNAL_ACCESS_WRITE); |
@@ -1217,12 +1200,7 @@ static int ocfs2_relink_block_group(handle_t *handle, | |||
1217 | } | 1200 | } |
1218 | 1201 | ||
1219 | bg->bg_next_group = fe->id2.i_chain.cl_recs[chain].c_blkno; | 1202 | bg->bg_next_group = fe->id2.i_chain.cl_recs[chain].c_blkno; |
1220 | 1203 | ocfs2_journal_dirty(handle, bg_bh); | |
1221 | status = ocfs2_journal_dirty(handle, bg_bh); | ||
1222 | if (status < 0) { | ||
1223 | mlog_errno(status); | ||
1224 | goto out_rollback; | ||
1225 | } | ||
1226 | 1204 | ||
1227 | status = ocfs2_journal_access_di(handle, INODE_CACHE(alloc_inode), | 1205 | status = ocfs2_journal_access_di(handle, INODE_CACHE(alloc_inode), |
1228 | fe_bh, OCFS2_JOURNAL_ACCESS_WRITE); | 1206 | fe_bh, OCFS2_JOURNAL_ACCESS_WRITE); |
@@ -1232,14 +1210,8 @@ static int ocfs2_relink_block_group(handle_t *handle, | |||
1232 | } | 1210 | } |
1233 | 1211 | ||
1234 | fe->id2.i_chain.cl_recs[chain].c_blkno = bg->bg_blkno; | 1212 | fe->id2.i_chain.cl_recs[chain].c_blkno = bg->bg_blkno; |
1213 | ocfs2_journal_dirty(handle, fe_bh); | ||
1235 | 1214 | ||
1236 | status = ocfs2_journal_dirty(handle, fe_bh); | ||
1237 | if (status < 0) { | ||
1238 | mlog_errno(status); | ||
1239 | goto out_rollback; | ||
1240 | } | ||
1241 | |||
1242 | status = 0; | ||
1243 | out_rollback: | 1215 | out_rollback: |
1244 | if (status < 0) { | 1216 | if (status < 0) { |
1245 | fe->id2.i_chain.cl_recs[chain].c_blkno = cpu_to_le64(fe_ptr); | 1217 | fe->id2.i_chain.cl_recs[chain].c_blkno = cpu_to_le64(fe_ptr); |
@@ -1386,10 +1358,7 @@ static int ocfs2_alloc_dinode_update_counts(struct inode *inode, | |||
1386 | tmp_used = le32_to_cpu(di->id1.bitmap1.i_used); | 1358 | tmp_used = le32_to_cpu(di->id1.bitmap1.i_used); |
1387 | di->id1.bitmap1.i_used = cpu_to_le32(num_bits + tmp_used); | 1359 | di->id1.bitmap1.i_used = cpu_to_le32(num_bits + tmp_used); |
1388 | le32_add_cpu(&cl->cl_recs[chain].c_free, -num_bits); | 1360 | le32_add_cpu(&cl->cl_recs[chain].c_free, -num_bits); |
1389 | 1361 | ocfs2_journal_dirty(handle, di_bh); | |
1390 | ret = ocfs2_journal_dirty(handle, di_bh); | ||
1391 | if (ret < 0) | ||
1392 | mlog_errno(ret); | ||
1393 | 1362 | ||
1394 | out: | 1363 | out: |
1395 | return ret; | 1364 | return ret; |
@@ -1560,13 +1529,7 @@ static int ocfs2_search_chain(struct ocfs2_alloc_context *ac, | |||
1560 | tmp_used = le32_to_cpu(fe->id1.bitmap1.i_used); | 1529 | tmp_used = le32_to_cpu(fe->id1.bitmap1.i_used); |
1561 | fe->id1.bitmap1.i_used = cpu_to_le32(*num_bits + tmp_used); | 1530 | fe->id1.bitmap1.i_used = cpu_to_le32(*num_bits + tmp_used); |
1562 | le32_add_cpu(&cl->cl_recs[chain].c_free, -(*num_bits)); | 1531 | le32_add_cpu(&cl->cl_recs[chain].c_free, -(*num_bits)); |
1563 | 1532 | ocfs2_journal_dirty(handle, ac->ac_bh); | |
1564 | status = ocfs2_journal_dirty(handle, | ||
1565 | ac->ac_bh); | ||
1566 | if (status < 0) { | ||
1567 | mlog_errno(status); | ||
1568 | goto bail; | ||
1569 | } | ||
1570 | 1533 | ||
1571 | status = ocfs2_block_group_set_bits(handle, | 1534 | status = ocfs2_block_group_set_bits(handle, |
1572 | alloc_inode, | 1535 | alloc_inode, |
@@ -2023,9 +1986,7 @@ static int ocfs2_block_group_clear_bits(handle_t *handle, | |||
2023 | if (undo_fn) | 1986 | if (undo_fn) |
2024 | jbd_unlock_bh_state(group_bh); | 1987 | jbd_unlock_bh_state(group_bh); |
2025 | 1988 | ||
2026 | status = ocfs2_journal_dirty(handle, group_bh); | 1989 | ocfs2_journal_dirty(handle, group_bh); |
2027 | if (status < 0) | ||
2028 | mlog_errno(status); | ||
2029 | bail: | 1990 | bail: |
2030 | return status; | 1991 | return status; |
2031 | } | 1992 | } |
@@ -2092,12 +2053,7 @@ static int _ocfs2_free_suballoc_bits(handle_t *handle, | |||
2092 | count); | 2053 | count); |
2093 | tmp_used = le32_to_cpu(fe->id1.bitmap1.i_used); | 2054 | tmp_used = le32_to_cpu(fe->id1.bitmap1.i_used); |
2094 | fe->id1.bitmap1.i_used = cpu_to_le32(tmp_used - count); | 2055 | fe->id1.bitmap1.i_used = cpu_to_le32(tmp_used - count); |
2095 | 2056 | ocfs2_journal_dirty(handle, alloc_bh); | |
2096 | status = ocfs2_journal_dirty(handle, alloc_bh); | ||
2097 | if (status < 0) { | ||
2098 | mlog_errno(status); | ||
2099 | goto bail; | ||
2100 | } | ||
2101 | 2057 | ||
2102 | bail: | 2058 | bail: |
2103 | brelse(group_bh); | 2059 | brelse(group_bh); |