diff options
-rw-r--r-- | fs/xfs/xfs_trans.c | 23 | ||||
-rw-r--r-- | fs/xfs/xfs_trans.h | 8 | ||||
-rw-r--r-- | fs/xfs/xfs_trans_ail.c | 4 | ||||
-rw-r--r-- | fs/xfs/xfs_trans_buf.c | 2 |
4 files changed, 17 insertions, 20 deletions
diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c index b986400ea728..5411e01ab452 100644 --- a/fs/xfs/xfs_trans.c +++ b/fs/xfs/xfs_trans.c | |||
@@ -716,10 +716,10 @@ xfs_trans_free_items( | |||
716 | lip->li_desc = NULL; | 716 | lip->li_desc = NULL; |
717 | 717 | ||
718 | if (commit_lsn != NULLCOMMITLSN) | 718 | if (commit_lsn != NULLCOMMITLSN) |
719 | IOP_COMMITTING(lip, commit_lsn); | 719 | lip->li_ops->iop_committing(lip, commit_lsn); |
720 | if (flags & XFS_TRANS_ABORT) | 720 | if (flags & XFS_TRANS_ABORT) |
721 | lip->li_flags |= XFS_LI_ABORTED; | 721 | lip->li_flags |= XFS_LI_ABORTED; |
722 | IOP_UNLOCK(lip); | 722 | lip->li_ops->iop_unlock(lip); |
723 | 723 | ||
724 | xfs_trans_free_item_desc(lidp); | 724 | xfs_trans_free_item_desc(lidp); |
725 | } | 725 | } |
@@ -739,8 +739,11 @@ xfs_log_item_batch_insert( | |||
739 | /* xfs_trans_ail_update_bulk drops ailp->xa_lock */ | 739 | /* xfs_trans_ail_update_bulk drops ailp->xa_lock */ |
740 | xfs_trans_ail_update_bulk(ailp, cur, log_items, nr_items, commit_lsn); | 740 | xfs_trans_ail_update_bulk(ailp, cur, log_items, nr_items, commit_lsn); |
741 | 741 | ||
742 | for (i = 0; i < nr_items; i++) | 742 | for (i = 0; i < nr_items; i++) { |
743 | IOP_UNPIN(log_items[i], 0); | 743 | struct xfs_log_item *lip = log_items[i]; |
744 | |||
745 | lip->li_ops->iop_unpin(lip, 0); | ||
746 | } | ||
744 | } | 747 | } |
745 | 748 | ||
746 | /* | 749 | /* |
@@ -750,11 +753,11 @@ xfs_log_item_batch_insert( | |||
750 | * | 753 | * |
751 | * If we are called with the aborted flag set, it is because a log write during | 754 | * If we are called with the aborted flag set, it is because a log write during |
752 | * a CIL checkpoint commit has failed. In this case, all the items in the | 755 | * a CIL checkpoint commit has failed. In this case, all the items in the |
753 | * checkpoint have already gone through IOP_COMMITED and IOP_UNLOCK, which | 756 | * checkpoint have already gone through iop_commited and iop_unlock, which |
754 | * means that checkpoint commit abort handling is treated exactly the same | 757 | * means that checkpoint commit abort handling is treated exactly the same |
755 | * as an iclog write error even though we haven't started any IO yet. Hence in | 758 | * as an iclog write error even though we haven't started any IO yet. Hence in |
756 | * this case all we need to do is IOP_COMMITTED processing, followed by an | 759 | * this case all we need to do is iop_committed processing, followed by an |
757 | * IOP_UNPIN(aborted) call. | 760 | * iop_unpin(aborted) call. |
758 | * | 761 | * |
759 | * The AIL cursor is used to optimise the insert process. If commit_lsn is not | 762 | * The AIL cursor is used to optimise the insert process. If commit_lsn is not |
760 | * at the end of the AIL, the insert cursor avoids the need to walk | 763 | * at the end of the AIL, the insert cursor avoids the need to walk |
@@ -787,7 +790,7 @@ xfs_trans_committed_bulk( | |||
787 | 790 | ||
788 | if (aborted) | 791 | if (aborted) |
789 | lip->li_flags |= XFS_LI_ABORTED; | 792 | lip->li_flags |= XFS_LI_ABORTED; |
790 | item_lsn = IOP_COMMITTED(lip, commit_lsn); | 793 | item_lsn = lip->li_ops->iop_committed(lip, commit_lsn); |
791 | 794 | ||
792 | /* item_lsn of -1 means the item needs no further processing */ | 795 | /* item_lsn of -1 means the item needs no further processing */ |
793 | if (XFS_LSN_CMP(item_lsn, (xfs_lsn_t)-1) == 0) | 796 | if (XFS_LSN_CMP(item_lsn, (xfs_lsn_t)-1) == 0) |
@@ -799,7 +802,7 @@ xfs_trans_committed_bulk( | |||
799 | */ | 802 | */ |
800 | if (aborted) { | 803 | if (aborted) { |
801 | ASSERT(XFS_FORCED_SHUTDOWN(ailp->xa_mount)); | 804 | ASSERT(XFS_FORCED_SHUTDOWN(ailp->xa_mount)); |
802 | IOP_UNPIN(lip, 1); | 805 | lip->li_ops->iop_unpin(lip, 1); |
803 | continue; | 806 | continue; |
804 | } | 807 | } |
805 | 808 | ||
@@ -817,7 +820,7 @@ xfs_trans_committed_bulk( | |||
817 | xfs_trans_ail_update(ailp, lip, item_lsn); | 820 | xfs_trans_ail_update(ailp, lip, item_lsn); |
818 | else | 821 | else |
819 | spin_unlock(&ailp->xa_lock); | 822 | spin_unlock(&ailp->xa_lock); |
820 | IOP_UNPIN(lip, 0); | 823 | lip->li_ops->iop_unpin(lip, 0); |
821 | continue; | 824 | continue; |
822 | } | 825 | } |
823 | 826 | ||
diff --git a/fs/xfs/xfs_trans.h b/fs/xfs/xfs_trans.h index 4786170baeb0..09cf40b89e8c 100644 --- a/fs/xfs/xfs_trans.h +++ b/fs/xfs/xfs_trans.h | |||
@@ -77,14 +77,8 @@ struct xfs_item_ops { | |||
77 | void (*iop_committing)(xfs_log_item_t *, xfs_lsn_t); | 77 | void (*iop_committing)(xfs_log_item_t *, xfs_lsn_t); |
78 | }; | 78 | }; |
79 | 79 | ||
80 | #define IOP_UNPIN(ip, remove) (*(ip)->li_ops->iop_unpin)(ip, remove) | ||
81 | #define IOP_PUSH(ip, list) (*(ip)->li_ops->iop_push)(ip, list) | ||
82 | #define IOP_UNLOCK(ip) (*(ip)->li_ops->iop_unlock)(ip) | ||
83 | #define IOP_COMMITTED(ip, lsn) (*(ip)->li_ops->iop_committed)(ip, lsn) | ||
84 | #define IOP_COMMITTING(ip, lsn) (*(ip)->li_ops->iop_committing)(ip, lsn) | ||
85 | |||
86 | /* | 80 | /* |
87 | * Return values for the IOP_PUSH() routines. | 81 | * Return values for the iop_push() routines. |
88 | */ | 82 | */ |
89 | #define XFS_ITEM_SUCCESS 0 | 83 | #define XFS_ITEM_SUCCESS 0 |
90 | #define XFS_ITEM_PINNED 1 | 84 | #define XFS_ITEM_PINNED 1 |
diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c index 0e7df03e60c5..21c6d7ddbc06 100644 --- a/fs/xfs/xfs_trans_ail.c +++ b/fs/xfs/xfs_trans_ail.c | |||
@@ -379,11 +379,11 @@ xfsaild_push( | |||
379 | int lock_result; | 379 | int lock_result; |
380 | 380 | ||
381 | /* | 381 | /* |
382 | * Note that IOP_PUSH may unlock and reacquire the AIL lock. We | 382 | * Note that iop_push may unlock and reacquire the AIL lock. We |
383 | * rely on the AIL cursor implementation to be able to deal with | 383 | * rely on the AIL cursor implementation to be able to deal with |
384 | * the dropped lock. | 384 | * the dropped lock. |
385 | */ | 385 | */ |
386 | lock_result = IOP_PUSH(lip, &ailp->xa_buf_list); | 386 | lock_result = lip->li_ops->iop_push(lip, &ailp->xa_buf_list); |
387 | switch (lock_result) { | 387 | switch (lock_result) { |
388 | case XFS_ITEM_SUCCESS: | 388 | case XFS_ITEM_SUCCESS: |
389 | XFS_STATS_INC(xs_push_ail_success); | 389 | XFS_STATS_INC(xs_push_ail_success); |
diff --git a/fs/xfs/xfs_trans_buf.c b/fs/xfs/xfs_trans_buf.c index aa5a04b844d6..8c75b8f67270 100644 --- a/fs/xfs/xfs_trans_buf.c +++ b/fs/xfs/xfs_trans_buf.c | |||
@@ -505,7 +505,7 @@ xfs_trans_brelse(xfs_trans_t *tp, | |||
505 | 505 | ||
506 | /* | 506 | /* |
507 | * Mark the buffer as not needing to be unlocked when the buf item's | 507 | * Mark the buffer as not needing to be unlocked when the buf item's |
508 | * IOP_UNLOCK() routine is called. The buffer must already be locked | 508 | * iop_unlock() routine is called. The buffer must already be locked |
509 | * and associated with the given transaction. | 509 | * and associated with the given transaction. |
510 | */ | 510 | */ |
511 | /* ARGSUSED */ | 511 | /* ARGSUSED */ |