mirror of https://gitee.com/openkylin/linux.git
xfs: update for 4.9-rc5
In this update: o fix for aborting deferred transactions on filesystem shutdown. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJYI/hIAAoJEK3oKUf0dfodjtIP/28PmMnwkSwC3IfNzMEuIlvM Q96IlnIXiOlqXSIlO69VM2cS8YCW2oVUYD6pjbhC2YcOaogYGo4TlFmQMrFL4dgG /q9aH+Hf6jGgGfwpC2MKq6WIYFU8oYYzG2FIm3jyEnnDCIFMH4H+FYGgzrNVIraQ 31nWn3ye/xHD44EWvRbEUAE0ROxbZfgm7+QST+R2+lAhLitTqZLNKkenlN8v5P9h WInRYBHxq5beIbbhAgm50wKfvxalrYChDeujorGsGAjJLliWpgJnbah6TwPNvRXH SwSkJfzI53AFXqH/45P2X5Ib34P7mIz6hTl3zednfU1GBeB3PxUGay6QU0rxRKAL 4vv/RB6pd5EzmU+hvnLJbM7lpRWpnV2FoP9YwRoqIR8vUvlXTYLpecEw1mtJwFmd VZ99F+8mtz+jGKK01hZDAtP7tHt1JSFhOnOQ506UsmnqhbgWaYuDEOOktX08iTik +zwTETuoh4frQDVLjrQ507RWJl3XblWXEgD4Dw+N19w7oTSAbuF6zIU7sTlcLJSx APqD1uJUzvfYV11eyY7bosuCx7QtTRwUQWQSkKu0f9FXAuILf2KdDI62lZCnKi5M 6wTUKFNZfqED+ergGyzPuVuQr/PhbQPEC61EehYMpQPSjeVEay2e30ouM6A+8VPp ZQal03fQzJvbxm/+8m3v =62jA -----END PGP SIGNATURE----- Merge tag 'xfs-fixes-for-linus-4.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs Pull xfs fix from Dave Chinner: "This is a fix for an unmount hang (regression) when the filesystem is shutdown. It was supposed to go to you for -rc3, but I accidentally tagged the commit prior to it in that pullreq. Summary: - fix for aborting deferred transactions on filesystem shutdown" * tag 'xfs-fixes-for-linus-4.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs: xfs: defer should abort intent items if the trans roll fails
This commit is contained in:
commit
a4fac3b5d1
|
@ -199,9 +199,9 @@ xfs_defer_intake_work(
|
|||
struct xfs_defer_pending *dfp;
|
||||
|
||||
list_for_each_entry(dfp, &dop->dop_intake, dfp_list) {
|
||||
trace_xfs_defer_intake_work(tp->t_mountp, dfp);
|
||||
dfp->dfp_intent = dfp->dfp_type->create_intent(tp,
|
||||
dfp->dfp_count);
|
||||
trace_xfs_defer_intake_work(tp->t_mountp, dfp);
|
||||
list_sort(tp->t_mountp, &dfp->dfp_work,
|
||||
dfp->dfp_type->diff_items);
|
||||
list_for_each(li, &dfp->dfp_work)
|
||||
|
@ -221,21 +221,14 @@ xfs_defer_trans_abort(
|
|||
struct xfs_defer_pending *dfp;
|
||||
|
||||
trace_xfs_defer_trans_abort(tp->t_mountp, dop);
|
||||
/*
|
||||
* If the transaction was committed, drop the intent reference
|
||||
* since we're bailing out of here. The other reference is
|
||||
* dropped when the intent hits the AIL. If the transaction
|
||||
* was not committed, the intent is freed by the intent item
|
||||
* unlock handler on abort.
|
||||
*/
|
||||
if (!dop->dop_committed)
|
||||
return;
|
||||
|
||||
/* Abort intent items. */
|
||||
/* Abort intent items that don't have a done item. */
|
||||
list_for_each_entry(dfp, &dop->dop_pending, dfp_list) {
|
||||
trace_xfs_defer_pending_abort(tp->t_mountp, dfp);
|
||||
if (!dfp->dfp_done)
|
||||
if (dfp->dfp_intent && !dfp->dfp_done) {
|
||||
dfp->dfp_type->abort_intent(dfp->dfp_intent);
|
||||
dfp->dfp_intent = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Shut down FS. */
|
||||
|
|
Loading…
Reference in New Issue