Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 140121
b: refs/heads/master
c: ff0205e
h: refs/heads/master
i:
  140119: 5337bb2
v: v3
  • Loading branch information
Christoph Hellwig authored and Christoph Hellwig committed Mar 16, 2009
1 parent ce88c46 commit 71b3921
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 35 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: dd0bbad81c8d02315a5035d3d6ea441dd1254dc1
refs/heads/master: ff0205e032b9733bb634ad5dadc79a0f6d30c721
65 changes: 31 additions & 34 deletions trunk/fs/xfs/xfs_log_recover.c
Original file line number Diff line number Diff line change
Expand Up @@ -2763,51 +2763,48 @@ xlog_recover_do_trans(
int error = 0;
xlog_recover_item_t *item, *first_item;

if ((error = xlog_recover_reorder_trans(trans)))
error = xlog_recover_reorder_trans(trans);
if (error)
return error;

first_item = item = trans->r_itemq;
do {
/*
* we don't need to worry about the block number being
* truncated in > 1 TB buffers because in user-land,
* we're now n32 or 64-bit so xfs_daddr_t is 64-bits so
* the blknos will get through the user-mode buffer
* cache properly. The only bad case is o32 kernels
* where xfs_daddr_t is 32-bits but mount will warn us
* off a > 1 TB filesystem before we get here.
*/
if ((ITEM_TYPE(item) == XFS_LI_BUF)) {
if ((error = xlog_recover_do_buffer_trans(log, item,
pass)))
break;
} else if ((ITEM_TYPE(item) == XFS_LI_INODE)) {
if ((error = xlog_recover_do_inode_trans(log, item,
pass)))
break;
} else if (ITEM_TYPE(item) == XFS_LI_EFI) {
if ((error = xlog_recover_do_efi_trans(log, item, trans->r_lsn,
pass)))
break;
} else if (ITEM_TYPE(item) == XFS_LI_EFD) {
switch (ITEM_TYPE(item)) {
case XFS_LI_BUF:
error = xlog_recover_do_buffer_trans(log, item, pass);
break;
case XFS_LI_INODE:
error = xlog_recover_do_inode_trans(log, item, pass);
break;
case XFS_LI_EFI:
error = xlog_recover_do_efi_trans(log, item,
trans->r_lsn, pass);
break;
case XFS_LI_EFD:
xlog_recover_do_efd_trans(log, item, pass);
} else if (ITEM_TYPE(item) == XFS_LI_DQUOT) {
if ((error = xlog_recover_do_dquot_trans(log, item,
pass)))
break;
} else if ((ITEM_TYPE(item) == XFS_LI_QUOTAOFF)) {
if ((error = xlog_recover_do_quotaoff_trans(log, item,
pass)))
break;
} else {
xlog_warn("XFS: xlog_recover_do_trans");
error = 0;
break;
case XFS_LI_DQUOT:
error = xlog_recover_do_dquot_trans(log, item, pass);
break;
case XFS_LI_QUOTAOFF:
error = xlog_recover_do_quotaoff_trans(log, item,
pass);
break;
default:
xlog_warn(
"XFS: invalid item type (%d) xlog_recover_do_trans", ITEM_TYPE(item));
ASSERT(0);
error = XFS_ERROR(EIO);
break;
}

if (error)
return error;
item = item->ri_next;
} while (first_item != item);

return error;
return 0;
}

/*
Expand Down

0 comments on commit 71b3921

Please sign in to comment.