mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
xfs: splice unsorted log items back to the transaction after the loop
On error, xlog_recover_reorder_trans() splices the leftover sort_list items back to trans->r_itemq inside the loop before breaking out. The loop tail already splices the per-fate lists back, so do sort_list there too, guarded by the assert that used to sit after the loop. No functional change. It drops the duplicated splice so the next patch can add another error case without repeating it. Reviewed-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Weiming Shi <bestswngs@gmail.com> Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
parent
5b4396e12c
commit
34dd225341
|
|
@ -1912,12 +1912,6 @@ xlog_recover_reorder_trans(
|
|||
xfs_warn(log->l_mp,
|
||||
"%s: unrecognized type of log operation (%d)",
|
||||
__func__, ITEM_TYPE(item));
|
||||
/*
|
||||
* return the remaining items back to the transaction
|
||||
* item list so they can be freed in caller.
|
||||
*/
|
||||
if (!list_empty(&sort_list))
|
||||
list_splice_init(&sort_list, &trans->r_itemq);
|
||||
error = -EFSCORRUPTED;
|
||||
break;
|
||||
}
|
||||
|
|
@ -1945,7 +1939,15 @@ xlog_recover_reorder_trans(
|
|||
}
|
||||
}
|
||||
|
||||
ASSERT(list_empty(&sort_list));
|
||||
/*
|
||||
* Return the remaining items back to the transaction item list so they
|
||||
* can be freed in caller. This should only happen when we encounter
|
||||
* an error.
|
||||
*/
|
||||
if (!list_empty(&sort_list)) {
|
||||
ASSERT(error);
|
||||
list_splice_init(&sort_list, &trans->r_itemq);
|
||||
}
|
||||
if (!list_empty(&buffer_list))
|
||||
list_splice(&buffer_list, &trans->r_itemq);
|
||||
if (!list_empty(&item_list))
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user