aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/ocfs2/suballoc.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c
index 101d16d78162..5397c07ce608 100644
--- a/fs/ocfs2/suballoc.c
+++ b/fs/ocfs2/suballoc.c
@@ -1443,44 +1443,38 @@ static int ocfs2_relink_block_group(handle_t *handle,
1443 status = ocfs2_journal_access_gd(handle, INODE_CACHE(alloc_inode), 1443 status = ocfs2_journal_access_gd(handle, INODE_CACHE(alloc_inode),
1444 prev_bg_bh, 1444 prev_bg_bh,
1445 OCFS2_JOURNAL_ACCESS_WRITE); 1445 OCFS2_JOURNAL_ACCESS_WRITE);
1446 if (status < 0) { 1446 if (status < 0)
1447 mlog_errno(status);
1448 goto out; 1447 goto out;
1449 }
1450 1448
1451 prev_bg->bg_next_group = bg->bg_next_group; 1449 prev_bg->bg_next_group = bg->bg_next_group;
1452 ocfs2_journal_dirty(handle, prev_bg_bh); 1450 ocfs2_journal_dirty(handle, prev_bg_bh);
1453 1451
1454 status = ocfs2_journal_access_gd(handle, INODE_CACHE(alloc_inode), 1452 status = ocfs2_journal_access_gd(handle, INODE_CACHE(alloc_inode),
1455 bg_bh, OCFS2_JOURNAL_ACCESS_WRITE); 1453 bg_bh, OCFS2_JOURNAL_ACCESS_WRITE);
1456 if (status < 0) { 1454 if (status < 0)
1457 mlog_errno(status);
1458 goto out_rollback_prev_bg; 1455 goto out_rollback_prev_bg;
1459 }
1460 1456
1461 bg->bg_next_group = fe->id2.i_chain.cl_recs[chain].c_blkno; 1457 bg->bg_next_group = fe->id2.i_chain.cl_recs[chain].c_blkno;
1462 ocfs2_journal_dirty(handle, bg_bh); 1458 ocfs2_journal_dirty(handle, bg_bh);
1463 1459
1464 status = ocfs2_journal_access_di(handle, INODE_CACHE(alloc_inode), 1460 status = ocfs2_journal_access_di(handle, INODE_CACHE(alloc_inode),
1465 fe_bh, OCFS2_JOURNAL_ACCESS_WRITE); 1461 fe_bh, OCFS2_JOURNAL_ACCESS_WRITE);
1466 if (status < 0) { 1462 if (status < 0)
1467 mlog_errno(status);
1468 goto out_rollback_bg; 1463 goto out_rollback_bg;
1469 }
1470 1464
1471 fe->id2.i_chain.cl_recs[chain].c_blkno = bg->bg_blkno; 1465 fe->id2.i_chain.cl_recs[chain].c_blkno = bg->bg_blkno;
1472 ocfs2_journal_dirty(handle, fe_bh); 1466 ocfs2_journal_dirty(handle, fe_bh);
1473 1467
1474out: 1468out:
1469 if (status < 0)
1470 mlog_errno(status);
1475 return status; 1471 return status;
1476 1472
1477out_rollback_bg: 1473out_rollback_bg:
1478 bg->bg_next_group = cpu_to_le64(bg_ptr); 1474 bg->bg_next_group = cpu_to_le64(bg_ptr);
1479out_rollback_prev_bg: 1475out_rollback_prev_bg:
1480 prev_bg->bg_next_group = cpu_to_le64(prev_bg_ptr); 1476 prev_bg->bg_next_group = cpu_to_le64(prev_bg_ptr);
1481 1477 goto out;
1482 mlog_errno(status);
1483 return status;
1484} 1478}
1485 1479
1486static inline int ocfs2_block_group_reasonably_empty(struct ocfs2_group_desc *bg, 1480static inline int ocfs2_block_group_reasonably_empty(struct ocfs2_group_desc *bg,