diff options
-rw-r--r-- | fs/xfs/xfs_bmap_item.c | 17 | ||||
-rw-r--r-- | fs/xfs/xfs_buf_item.c | 15 | ||||
-rw-r--r-- | fs/xfs/xfs_dquot_item.c | 19 | ||||
-rw-r--r-- | fs/xfs/xfs_extfree_item.c | 17 | ||||
-rw-r--r-- | fs/xfs/xfs_icreate_item.c | 10 | ||||
-rw-r--r-- | fs/xfs/xfs_inode_item.c | 11 | ||||
-rw-r--r-- | fs/xfs/xfs_log_cil.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_refcount_item.c | 17 | ||||
-rw-r--r-- | fs/xfs/xfs_rmap_item.c | 17 | ||||
-rw-r--r-- | fs/xfs/xfs_trace.h | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_trans.c | 7 | ||||
-rw-r--r-- | fs/xfs/xfs_trans.h | 4 | ||||
-rw-r--r-- | fs/xfs/xfs_trans_buf.c | 2 |
13 files changed, 67 insertions, 73 deletions
diff --git a/fs/xfs/xfs_bmap_item.c b/fs/xfs/xfs_bmap_item.c index b2395cb1674c..bb5fff120ef5 100644 --- a/fs/xfs/xfs_bmap_item.c +++ b/fs/xfs/xfs_bmap_item.c | |||
@@ -120,11 +120,10 @@ xfs_bui_item_unpin( | |||
120 | * constructed and thus we free the BUI here directly. | 120 | * constructed and thus we free the BUI here directly. |
121 | */ | 121 | */ |
122 | STATIC void | 122 | STATIC void |
123 | xfs_bui_item_unlock( | 123 | xfs_bui_item_release( |
124 | struct xfs_log_item *lip) | 124 | struct xfs_log_item *lip) |
125 | { | 125 | { |
126 | if (test_bit(XFS_LI_ABORTED, &lip->li_flags)) | 126 | xfs_bui_release(BUI_ITEM(lip)); |
127 | xfs_bui_release(BUI_ITEM(lip)); | ||
128 | } | 127 | } |
129 | 128 | ||
130 | /* | 129 | /* |
@@ -134,7 +133,7 @@ static const struct xfs_item_ops xfs_bui_item_ops = { | |||
134 | .iop_size = xfs_bui_item_size, | 133 | .iop_size = xfs_bui_item_size, |
135 | .iop_format = xfs_bui_item_format, | 134 | .iop_format = xfs_bui_item_format, |
136 | .iop_unpin = xfs_bui_item_unpin, | 135 | .iop_unpin = xfs_bui_item_unpin, |
137 | .iop_unlock = xfs_bui_item_unlock, | 136 | .iop_release = xfs_bui_item_release, |
138 | }; | 137 | }; |
139 | 138 | ||
140 | /* | 139 | /* |
@@ -201,15 +200,13 @@ xfs_bud_item_format( | |||
201 | * BUD. | 200 | * BUD. |
202 | */ | 201 | */ |
203 | STATIC void | 202 | STATIC void |
204 | xfs_bud_item_unlock( | 203 | xfs_bud_item_release( |
205 | struct xfs_log_item *lip) | 204 | struct xfs_log_item *lip) |
206 | { | 205 | { |
207 | struct xfs_bud_log_item *budp = BUD_ITEM(lip); | 206 | struct xfs_bud_log_item *budp = BUD_ITEM(lip); |
208 | 207 | ||
209 | if (test_bit(XFS_LI_ABORTED, &lip->li_flags)) { | 208 | xfs_bui_release(budp->bud_buip); |
210 | xfs_bui_release(budp->bud_buip); | 209 | kmem_zone_free(xfs_bud_zone, budp); |
211 | kmem_zone_free(xfs_bud_zone, budp); | ||
212 | } | ||
213 | } | 210 | } |
214 | 211 | ||
215 | /* | 212 | /* |
@@ -243,7 +240,7 @@ xfs_bud_item_committed( | |||
243 | static const struct xfs_item_ops xfs_bud_item_ops = { | 240 | static const struct xfs_item_ops xfs_bud_item_ops = { |
244 | .iop_size = xfs_bud_item_size, | 241 | .iop_size = xfs_bud_item_size, |
245 | .iop_format = xfs_bud_item_format, | 242 | .iop_format = xfs_bud_item_format, |
246 | .iop_unlock = xfs_bud_item_unlock, | 243 | .iop_release = xfs_bud_item_release, |
247 | .iop_committed = xfs_bud_item_committed, | 244 | .iop_committed = xfs_bud_item_committed, |
248 | }; | 245 | }; |
249 | 246 | ||
diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c index b6c684ea56c1..e9da8274bf31 100644 --- a/fs/xfs/xfs_buf_item.c +++ b/fs/xfs/xfs_buf_item.c | |||
@@ -595,7 +595,7 @@ xfs_buf_item_put( | |||
595 | * free the item. | 595 | * free the item. |
596 | */ | 596 | */ |
597 | STATIC void | 597 | STATIC void |
598 | xfs_buf_item_unlock( | 598 | xfs_buf_item_release( |
599 | struct xfs_log_item *lip) | 599 | struct xfs_log_item *lip) |
600 | { | 600 | { |
601 | struct xfs_buf_log_item *bip = BUF_ITEM(lip); | 601 | struct xfs_buf_log_item *bip = BUF_ITEM(lip); |
@@ -610,7 +610,7 @@ xfs_buf_item_unlock( | |||
610 | &lip->li_flags); | 610 | &lip->li_flags); |
611 | #endif | 611 | #endif |
612 | 612 | ||
613 | trace_xfs_buf_item_unlock(bip); | 613 | trace_xfs_buf_item_release(bip); |
614 | 614 | ||
615 | /* | 615 | /* |
616 | * The bli dirty state should match whether the blf has logged segments | 616 | * The bli dirty state should match whether the blf has logged segments |
@@ -640,6 +640,14 @@ xfs_buf_item_unlock( | |||
640 | xfs_buf_relse(bp); | 640 | xfs_buf_relse(bp); |
641 | } | 641 | } |
642 | 642 | ||
643 | STATIC void | ||
644 | xfs_buf_item_committing( | ||
645 | struct xfs_log_item *lip, | ||
646 | xfs_lsn_t commit_lsn) | ||
647 | { | ||
648 | return xfs_buf_item_release(lip); | ||
649 | } | ||
650 | |||
643 | /* | 651 | /* |
644 | * This is called to find out where the oldest active copy of the | 652 | * This is called to find out where the oldest active copy of the |
645 | * buf log item in the on disk log resides now that the last log | 653 | * buf log item in the on disk log resides now that the last log |
@@ -680,7 +688,8 @@ static const struct xfs_item_ops xfs_buf_item_ops = { | |||
680 | .iop_format = xfs_buf_item_format, | 688 | .iop_format = xfs_buf_item_format, |
681 | .iop_pin = xfs_buf_item_pin, | 689 | .iop_pin = xfs_buf_item_pin, |
682 | .iop_unpin = xfs_buf_item_unpin, | 690 | .iop_unpin = xfs_buf_item_unpin, |
683 | .iop_unlock = xfs_buf_item_unlock, | 691 | .iop_release = xfs_buf_item_release, |
692 | .iop_committing = xfs_buf_item_committing, | ||
684 | .iop_committed = xfs_buf_item_committed, | 693 | .iop_committed = xfs_buf_item_committed, |
685 | .iop_push = xfs_buf_item_push, | 694 | .iop_push = xfs_buf_item_push, |
686 | }; | 695 | }; |
diff --git a/fs/xfs/xfs_dquot_item.c b/fs/xfs/xfs_dquot_item.c index 98b0d732ef53..334f6ca1cefc 100644 --- a/fs/xfs/xfs_dquot_item.c +++ b/fs/xfs/xfs_dquot_item.c | |||
@@ -198,14 +198,8 @@ out_unlock: | |||
198 | return rval; | 198 | return rval; |
199 | } | 199 | } |
200 | 200 | ||
201 | /* | ||
202 | * Unlock the dquot associated with the log item. | ||
203 | * Clear the fields of the dquot and dquot log item that | ||
204 | * are specific to the current transaction. If the | ||
205 | * hold flags is set, do not unlock the dquot. | ||
206 | */ | ||
207 | STATIC void | 201 | STATIC void |
208 | xfs_qm_dquot_logitem_unlock( | 202 | xfs_qm_dquot_logitem_release( |
209 | struct xfs_log_item *lip) | 203 | struct xfs_log_item *lip) |
210 | { | 204 | { |
211 | struct xfs_dquot *dqp = DQUOT_ITEM(lip)->qli_dquot; | 205 | struct xfs_dquot *dqp = DQUOT_ITEM(lip)->qli_dquot; |
@@ -221,6 +215,14 @@ xfs_qm_dquot_logitem_unlock( | |||
221 | xfs_dqunlock(dqp); | 215 | xfs_dqunlock(dqp); |
222 | } | 216 | } |
223 | 217 | ||
218 | STATIC void | ||
219 | xfs_qm_dquot_logitem_committing( | ||
220 | struct xfs_log_item *lip, | ||
221 | xfs_lsn_t commit_lsn) | ||
222 | { | ||
223 | return xfs_qm_dquot_logitem_release(lip); | ||
224 | } | ||
225 | |||
224 | /* | 226 | /* |
225 | * This is the ops vector for dquots | 227 | * This is the ops vector for dquots |
226 | */ | 228 | */ |
@@ -229,7 +231,8 @@ static const struct xfs_item_ops xfs_dquot_item_ops = { | |||
229 | .iop_format = xfs_qm_dquot_logitem_format, | 231 | .iop_format = xfs_qm_dquot_logitem_format, |
230 | .iop_pin = xfs_qm_dquot_logitem_pin, | 232 | .iop_pin = xfs_qm_dquot_logitem_pin, |
231 | .iop_unpin = xfs_qm_dquot_logitem_unpin, | 233 | .iop_unpin = xfs_qm_dquot_logitem_unpin, |
232 | .iop_unlock = xfs_qm_dquot_logitem_unlock, | 234 | .iop_release = xfs_qm_dquot_logitem_release, |
235 | .iop_committing = xfs_qm_dquot_logitem_committing, | ||
233 | .iop_push = xfs_qm_dquot_logitem_push, | 236 | .iop_push = xfs_qm_dquot_logitem_push, |
234 | .iop_error = xfs_dquot_item_error | 237 | .iop_error = xfs_dquot_item_error |
235 | }; | 238 | }; |
diff --git a/fs/xfs/xfs_extfree_item.c b/fs/xfs/xfs_extfree_item.c index c1ab3a056bb8..70df19007995 100644 --- a/fs/xfs/xfs_extfree_item.c +++ b/fs/xfs/xfs_extfree_item.c | |||
@@ -130,11 +130,10 @@ xfs_efi_item_unpin( | |||
130 | * constructed and thus we free the EFI here directly. | 130 | * constructed and thus we free the EFI here directly. |
131 | */ | 131 | */ |
132 | STATIC void | 132 | STATIC void |
133 | xfs_efi_item_unlock( | 133 | xfs_efi_item_release( |
134 | struct xfs_log_item *lip) | 134 | struct xfs_log_item *lip) |
135 | { | 135 | { |
136 | if (test_bit(XFS_LI_ABORTED, &lip->li_flags)) | 136 | xfs_efi_release(EFI_ITEM(lip)); |
137 | xfs_efi_release(EFI_ITEM(lip)); | ||
138 | } | 137 | } |
139 | 138 | ||
140 | /* | 139 | /* |
@@ -144,7 +143,7 @@ static const struct xfs_item_ops xfs_efi_item_ops = { | |||
144 | .iop_size = xfs_efi_item_size, | 143 | .iop_size = xfs_efi_item_size, |
145 | .iop_format = xfs_efi_item_format, | 144 | .iop_format = xfs_efi_item_format, |
146 | .iop_unpin = xfs_efi_item_unpin, | 145 | .iop_unpin = xfs_efi_item_unpin, |
147 | .iop_unlock = xfs_efi_item_unlock, | 146 | .iop_release = xfs_efi_item_release, |
148 | }; | 147 | }; |
149 | 148 | ||
150 | 149 | ||
@@ -300,15 +299,13 @@ xfs_efd_item_format( | |||
300 | * the transaction is cancelled, drop our reference to the EFI and free the EFD. | 299 | * the transaction is cancelled, drop our reference to the EFI and free the EFD. |
301 | */ | 300 | */ |
302 | STATIC void | 301 | STATIC void |
303 | xfs_efd_item_unlock( | 302 | xfs_efd_item_release( |
304 | struct xfs_log_item *lip) | 303 | struct xfs_log_item *lip) |
305 | { | 304 | { |
306 | struct xfs_efd_log_item *efdp = EFD_ITEM(lip); | 305 | struct xfs_efd_log_item *efdp = EFD_ITEM(lip); |
307 | 306 | ||
308 | if (test_bit(XFS_LI_ABORTED, &lip->li_flags)) { | 307 | xfs_efi_release(efdp->efd_efip); |
309 | xfs_efi_release(efdp->efd_efip); | 308 | xfs_efd_item_free(efdp); |
310 | xfs_efd_item_free(efdp); | ||
311 | } | ||
312 | } | 309 | } |
313 | 310 | ||
314 | /* | 311 | /* |
@@ -342,7 +339,7 @@ xfs_efd_item_committed( | |||
342 | static const struct xfs_item_ops xfs_efd_item_ops = { | 339 | static const struct xfs_item_ops xfs_efd_item_ops = { |
343 | .iop_size = xfs_efd_item_size, | 340 | .iop_size = xfs_efd_item_size, |
344 | .iop_format = xfs_efd_item_format, | 341 | .iop_format = xfs_efd_item_format, |
345 | .iop_unlock = xfs_efd_item_unlock, | 342 | .iop_release = xfs_efd_item_release, |
346 | .iop_committed = xfs_efd_item_committed, | 343 | .iop_committed = xfs_efd_item_committed, |
347 | }; | 344 | }; |
348 | 345 | ||
diff --git a/fs/xfs/xfs_icreate_item.c b/fs/xfs/xfs_icreate_item.c index cbaabc55f0c9..9aceb35dce24 100644 --- a/fs/xfs/xfs_icreate_item.c +++ b/fs/xfs/xfs_icreate_item.c | |||
@@ -57,14 +57,10 @@ xfs_icreate_item_format( | |||
57 | } | 57 | } |
58 | 58 | ||
59 | STATIC void | 59 | STATIC void |
60 | xfs_icreate_item_unlock( | 60 | xfs_icreate_item_release( |
61 | struct xfs_log_item *lip) | 61 | struct xfs_log_item *lip) |
62 | { | 62 | { |
63 | struct xfs_icreate_item *icp = ICR_ITEM(lip); | 63 | kmem_zone_free(xfs_icreate_zone, ICR_ITEM(lip)); |
64 | |||
65 | if (test_bit(XFS_LI_ABORTED, &lip->li_flags)) | ||
66 | kmem_zone_free(xfs_icreate_zone, icp); | ||
67 | return; | ||
68 | } | 64 | } |
69 | 65 | ||
70 | /* | 66 | /* |
@@ -89,7 +85,7 @@ xfs_icreate_item_committed( | |||
89 | static const struct xfs_item_ops xfs_icreate_item_ops = { | 85 | static const struct xfs_item_ops xfs_icreate_item_ops = { |
90 | .iop_size = xfs_icreate_item_size, | 86 | .iop_size = xfs_icreate_item_size, |
91 | .iop_format = xfs_icreate_item_format, | 87 | .iop_format = xfs_icreate_item_format, |
92 | .iop_unlock = xfs_icreate_item_unlock, | 88 | .iop_release = xfs_icreate_item_release, |
93 | .iop_committed = xfs_icreate_item_committed, | 89 | .iop_committed = xfs_icreate_item_committed, |
94 | }; | 90 | }; |
95 | 91 | ||
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index 957f3dca0d7a..e152b3bb3272 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c | |||
@@ -566,7 +566,7 @@ out_unlock: | |||
566 | * Unlock the inode associated with the inode log item. | 566 | * Unlock the inode associated with the inode log item. |
567 | */ | 567 | */ |
568 | STATIC void | 568 | STATIC void |
569 | xfs_inode_item_unlock( | 569 | xfs_inode_item_release( |
570 | struct xfs_log_item *lip) | 570 | struct xfs_log_item *lip) |
571 | { | 571 | { |
572 | struct xfs_inode_log_item *iip = INODE_ITEM(lip); | 572 | struct xfs_inode_log_item *iip = INODE_ITEM(lip); |
@@ -622,9 +622,10 @@ xfs_inode_item_committed( | |||
622 | STATIC void | 622 | STATIC void |
623 | xfs_inode_item_committing( | 623 | xfs_inode_item_committing( |
624 | struct xfs_log_item *lip, | 624 | struct xfs_log_item *lip, |
625 | xfs_lsn_t lsn) | 625 | xfs_lsn_t commit_lsn) |
626 | { | 626 | { |
627 | INODE_ITEM(lip)->ili_last_lsn = lsn; | 627 | INODE_ITEM(lip)->ili_last_lsn = commit_lsn; |
628 | return xfs_inode_item_release(lip); | ||
628 | } | 629 | } |
629 | 630 | ||
630 | /* | 631 | /* |
@@ -635,10 +636,10 @@ static const struct xfs_item_ops xfs_inode_item_ops = { | |||
635 | .iop_format = xfs_inode_item_format, | 636 | .iop_format = xfs_inode_item_format, |
636 | .iop_pin = xfs_inode_item_pin, | 637 | .iop_pin = xfs_inode_item_pin, |
637 | .iop_unpin = xfs_inode_item_unpin, | 638 | .iop_unpin = xfs_inode_item_unpin, |
638 | .iop_unlock = xfs_inode_item_unlock, | 639 | .iop_release = xfs_inode_item_release, |
639 | .iop_committed = xfs_inode_item_committed, | 640 | .iop_committed = xfs_inode_item_committed, |
640 | .iop_push = xfs_inode_item_push, | 641 | .iop_push = xfs_inode_item_push, |
641 | .iop_committing = xfs_inode_item_committing, | 642 | .iop_committing = xfs_inode_item_committing, |
642 | .iop_error = xfs_inode_item_error | 643 | .iop_error = xfs_inode_item_error |
643 | }; | 644 | }; |
644 | 645 | ||
diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c index c856bfce5bf2..4cb459f21ad4 100644 --- a/fs/xfs/xfs_log_cil.c +++ b/fs/xfs/xfs_log_cil.c | |||
@@ -1024,8 +1024,6 @@ xfs_log_commit_cil( | |||
1024 | xfs_trans_del_item(lip); | 1024 | xfs_trans_del_item(lip); |
1025 | if (lip->li_ops->iop_committing) | 1025 | if (lip->li_ops->iop_committing) |
1026 | lip->li_ops->iop_committing(lip, xc_commit_lsn); | 1026 | lip->li_ops->iop_committing(lip, xc_commit_lsn); |
1027 | if (lip->li_ops->iop_unlock) | ||
1028 | lip->li_ops->iop_unlock(lip); | ||
1029 | } | 1027 | } |
1030 | xlog_cil_push_background(log); | 1028 | xlog_cil_push_background(log); |
1031 | 1029 | ||
diff --git a/fs/xfs/xfs_refcount_item.c b/fs/xfs/xfs_refcount_item.c index 03a61886fe2a..9f8fb23dcc81 100644 --- a/fs/xfs/xfs_refcount_item.c +++ b/fs/xfs/xfs_refcount_item.c | |||
@@ -118,11 +118,10 @@ xfs_cui_item_unpin( | |||
118 | * constructed and thus we free the CUI here directly. | 118 | * constructed and thus we free the CUI here directly. |
119 | */ | 119 | */ |
120 | STATIC void | 120 | STATIC void |
121 | xfs_cui_item_unlock( | 121 | xfs_cui_item_release( |
122 | struct xfs_log_item *lip) | 122 | struct xfs_log_item *lip) |
123 | { | 123 | { |
124 | if (test_bit(XFS_LI_ABORTED, &lip->li_flags)) | 124 | xfs_cui_release(CUI_ITEM(lip)); |
125 | xfs_cui_release(CUI_ITEM(lip)); | ||
126 | } | 125 | } |
127 | 126 | ||
128 | /* | 127 | /* |
@@ -132,7 +131,7 @@ static const struct xfs_item_ops xfs_cui_item_ops = { | |||
132 | .iop_size = xfs_cui_item_size, | 131 | .iop_size = xfs_cui_item_size, |
133 | .iop_format = xfs_cui_item_format, | 132 | .iop_format = xfs_cui_item_format, |
134 | .iop_unpin = xfs_cui_item_unpin, | 133 | .iop_unpin = xfs_cui_item_unpin, |
135 | .iop_unlock = xfs_cui_item_unlock, | 134 | .iop_release = xfs_cui_item_release, |
136 | }; | 135 | }; |
137 | 136 | ||
138 | /* | 137 | /* |
@@ -205,15 +204,13 @@ xfs_cud_item_format( | |||
205 | * CUD. | 204 | * CUD. |
206 | */ | 205 | */ |
207 | STATIC void | 206 | STATIC void |
208 | xfs_cud_item_unlock( | 207 | xfs_cud_item_release( |
209 | struct xfs_log_item *lip) | 208 | struct xfs_log_item *lip) |
210 | { | 209 | { |
211 | struct xfs_cud_log_item *cudp = CUD_ITEM(lip); | 210 | struct xfs_cud_log_item *cudp = CUD_ITEM(lip); |
212 | 211 | ||
213 | if (test_bit(XFS_LI_ABORTED, &lip->li_flags)) { | 212 | xfs_cui_release(cudp->cud_cuip); |
214 | xfs_cui_release(cudp->cud_cuip); | 213 | kmem_zone_free(xfs_cud_zone, cudp); |
215 | kmem_zone_free(xfs_cud_zone, cudp); | ||
216 | } | ||
217 | } | 214 | } |
218 | 215 | ||
219 | /* | 216 | /* |
@@ -247,7 +244,7 @@ xfs_cud_item_committed( | |||
247 | static const struct xfs_item_ops xfs_cud_item_ops = { | 244 | static const struct xfs_item_ops xfs_cud_item_ops = { |
248 | .iop_size = xfs_cud_item_size, | 245 | .iop_size = xfs_cud_item_size, |
249 | .iop_format = xfs_cud_item_format, | 246 | .iop_format = xfs_cud_item_format, |
250 | .iop_unlock = xfs_cud_item_unlock, | 247 | .iop_release = xfs_cud_item_release, |
251 | .iop_committed = xfs_cud_item_committed, | 248 | .iop_committed = xfs_cud_item_committed, |
252 | }; | 249 | }; |
253 | 250 | ||
diff --git a/fs/xfs/xfs_rmap_item.c b/fs/xfs/xfs_rmap_item.c index df9f2505c5f3..e907bd169de5 100644 --- a/fs/xfs/xfs_rmap_item.c +++ b/fs/xfs/xfs_rmap_item.c | |||
@@ -117,11 +117,10 @@ xfs_rui_item_unpin( | |||
117 | * constructed and thus we free the RUI here directly. | 117 | * constructed and thus we free the RUI here directly. |
118 | */ | 118 | */ |
119 | STATIC void | 119 | STATIC void |
120 | xfs_rui_item_unlock( | 120 | xfs_rui_item_release( |
121 | struct xfs_log_item *lip) | 121 | struct xfs_log_item *lip) |
122 | { | 122 | { |
123 | if (test_bit(XFS_LI_ABORTED, &lip->li_flags)) | 123 | xfs_rui_release(RUI_ITEM(lip)); |
124 | xfs_rui_release(RUI_ITEM(lip)); | ||
125 | } | 124 | } |
126 | 125 | ||
127 | /* | 126 | /* |
@@ -131,7 +130,7 @@ static const struct xfs_item_ops xfs_rui_item_ops = { | |||
131 | .iop_size = xfs_rui_item_size, | 130 | .iop_size = xfs_rui_item_size, |
132 | .iop_format = xfs_rui_item_format, | 131 | .iop_format = xfs_rui_item_format, |
133 | .iop_unpin = xfs_rui_item_unpin, | 132 | .iop_unpin = xfs_rui_item_unpin, |
134 | .iop_unlock = xfs_rui_item_unlock, | 133 | .iop_release = xfs_rui_item_release, |
135 | }; | 134 | }; |
136 | 135 | ||
137 | /* | 136 | /* |
@@ -226,15 +225,13 @@ xfs_rud_item_format( | |||
226 | * RUD. | 225 | * RUD. |
227 | */ | 226 | */ |
228 | STATIC void | 227 | STATIC void |
229 | xfs_rud_item_unlock( | 228 | xfs_rud_item_release( |
230 | struct xfs_log_item *lip) | 229 | struct xfs_log_item *lip) |
231 | { | 230 | { |
232 | struct xfs_rud_log_item *rudp = RUD_ITEM(lip); | 231 | struct xfs_rud_log_item *rudp = RUD_ITEM(lip); |
233 | 232 | ||
234 | if (test_bit(XFS_LI_ABORTED, &lip->li_flags)) { | 233 | xfs_rui_release(rudp->rud_ruip); |
235 | xfs_rui_release(rudp->rud_ruip); | 234 | kmem_zone_free(xfs_rud_zone, rudp); |
236 | kmem_zone_free(xfs_rud_zone, rudp); | ||
237 | } | ||
238 | } | 235 | } |
239 | 236 | ||
240 | /* | 237 | /* |
@@ -268,7 +265,7 @@ xfs_rud_item_committed( | |||
268 | static const struct xfs_item_ops xfs_rud_item_ops = { | 265 | static const struct xfs_item_ops xfs_rud_item_ops = { |
269 | .iop_size = xfs_rud_item_size, | 266 | .iop_size = xfs_rud_item_size, |
270 | .iop_format = xfs_rud_item_format, | 267 | .iop_format = xfs_rud_item_format, |
271 | .iop_unlock = xfs_rud_item_unlock, | 268 | .iop_release = xfs_rud_item_release, |
272 | .iop_committed = xfs_rud_item_committed, | 269 | .iop_committed = xfs_rud_item_committed, |
273 | }; | 270 | }; |
274 | 271 | ||
diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h index 195a9cdb954e..65c920554b96 100644 --- a/fs/xfs/xfs_trace.h +++ b/fs/xfs/xfs_trace.h | |||
@@ -475,7 +475,7 @@ DEFINE_BUF_ITEM_EVENT(xfs_buf_item_ordered); | |||
475 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_pin); | 475 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_pin); |
476 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unpin); | 476 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unpin); |
477 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unpin_stale); | 477 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unpin_stale); |
478 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unlock); | 478 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_release); |
479 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_committed); | 479 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_committed); |
480 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_push); | 480 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_push); |
481 | DEFINE_BUF_ITEM_EVENT(xfs_trans_get_buf); | 481 | DEFINE_BUF_ITEM_EVENT(xfs_trans_get_buf); |
diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c index 003d916904d2..261c51486d7a 100644 --- a/fs/xfs/xfs_trans.c +++ b/fs/xfs/xfs_trans.c | |||
@@ -780,9 +780,8 @@ xfs_trans_free_items( | |||
780 | xfs_trans_del_item(lip); | 780 | xfs_trans_del_item(lip); |
781 | if (abort) | 781 | if (abort) |
782 | set_bit(XFS_LI_ABORTED, &lip->li_flags); | 782 | set_bit(XFS_LI_ABORTED, &lip->li_flags); |
783 | 783 | if (lip->li_ops->iop_release) | |
784 | if (lip->li_ops->iop_unlock) | 784 | lip->li_ops->iop_release(lip); |
785 | lip->li_ops->iop_unlock(lip); | ||
786 | } | 785 | } |
787 | } | 786 | } |
788 | 787 | ||
@@ -815,7 +814,7 @@ xfs_log_item_batch_insert( | |||
815 | * | 814 | * |
816 | * If we are called with the aborted flag set, it is because a log write during | 815 | * If we are called with the aborted flag set, it is because a log write during |
817 | * a CIL checkpoint commit has failed. In this case, all the items in the | 816 | * a CIL checkpoint commit has failed. In this case, all the items in the |
818 | * checkpoint have already gone through iop_committed and iop_unlock, which | 817 | * checkpoint have already gone through iop_committed and iop_committing, which |
819 | * means that checkpoint commit abort handling is treated exactly the same | 818 | * means that checkpoint commit abort handling is treated exactly the same |
820 | * as an iclog write error even though we haven't started any IO yet. Hence in | 819 | * as an iclog write error even though we haven't started any IO yet. Hence in |
821 | * this case all we need to do is iop_committed processing, followed by an | 820 | * this case all we need to do is iop_committed processing, followed by an |
diff --git a/fs/xfs/xfs_trans.h b/fs/xfs/xfs_trans.h index fd35da161a2b..522c1d565aa4 100644 --- a/fs/xfs/xfs_trans.h +++ b/fs/xfs/xfs_trans.h | |||
@@ -72,9 +72,9 @@ struct xfs_item_ops { | |||
72 | void (*iop_pin)(xfs_log_item_t *); | 72 | void (*iop_pin)(xfs_log_item_t *); |
73 | void (*iop_unpin)(xfs_log_item_t *, int remove); | 73 | void (*iop_unpin)(xfs_log_item_t *, int remove); |
74 | uint (*iop_push)(struct xfs_log_item *, struct list_head *); | 74 | uint (*iop_push)(struct xfs_log_item *, struct list_head *); |
75 | void (*iop_unlock)(xfs_log_item_t *); | 75 | void (*iop_committing)(struct xfs_log_item *, xfs_lsn_t commit_lsn); |
76 | void (*iop_release)(struct xfs_log_item *); | ||
76 | xfs_lsn_t (*iop_committed)(xfs_log_item_t *, xfs_lsn_t); | 77 | xfs_lsn_t (*iop_committed)(xfs_log_item_t *, xfs_lsn_t); |
77 | void (*iop_committing)(xfs_log_item_t *, xfs_lsn_t); | ||
78 | void (*iop_error)(xfs_log_item_t *, xfs_buf_t *); | 78 | void (*iop_error)(xfs_log_item_t *, xfs_buf_t *); |
79 | }; | 79 | }; |
80 | 80 | ||
diff --git a/fs/xfs/xfs_trans_buf.c b/fs/xfs/xfs_trans_buf.c index a1764a1dbd99..0cdd8a314d85 100644 --- a/fs/xfs/xfs_trans_buf.c +++ b/fs/xfs/xfs_trans_buf.c | |||
@@ -427,7 +427,7 @@ xfs_trans_brelse( | |||
427 | 427 | ||
428 | /* | 428 | /* |
429 | * Mark the buffer as not needing to be unlocked when the buf item's | 429 | * Mark the buffer as not needing to be unlocked when the buf item's |
430 | * iop_unlock() routine is called. The buffer must already be locked | 430 | * iop_committing() routine is called. The buffer must already be locked |
431 | * and associated with the given transaction. | 431 | * and associated with the given transaction. |
432 | */ | 432 | */ |
433 | /* ARGSUSED */ | 433 | /* ARGSUSED */ |