|
|
| version 1.168, 2008/08/06 16:19:11 | version 1.169, 2008/09/03 06:13:25 |
|---|---|
| Line 732 xfs_buf_item_init( | Line 732 xfs_buf_item_init( |
| bip->bli_item.li_ops = &xfs_buf_item_ops; | bip->bli_item.li_ops = &xfs_buf_item_ops; |
| bip->bli_item.li_mountp = mp; | bip->bli_item.li_mountp = mp; |
| bip->bli_buf = bp; | bip->bli_buf = bp; |
| xfs_buf_hold(bp); | |
| bip->bli_format.blf_type = XFS_LI_BUF; | bip->bli_format.blf_type = XFS_LI_BUF; |
| bip->bli_format.blf_blkno = (__int64_t)XFS_BUF_ADDR(bp); | bip->bli_format.blf_blkno = (__int64_t)XFS_BUF_ADDR(bp); |
| bip->bli_format.blf_len = (ushort)BTOBB(XFS_BUF_COUNT(bp)); | bip->bli_format.blf_len = (ushort)BTOBB(XFS_BUF_COUNT(bp)); |
| Line 867 xfs_buf_item_dirty( | Line 868 xfs_buf_item_dirty( |
| return (bip->bli_flags & XFS_BLI_DIRTY); | return (bip->bli_flags & XFS_BLI_DIRTY); |
| } | } |
| STATIC void | |
| xfs_buf_item_free( | |
| xfs_buf_log_item_t *bip) | |
| { | |
| #ifdef XFS_TRANS_DEBUG | |
| kmem_free(bip->bli_orig); | |
| kmem_free(bip->bli_logged); | |
| #endif /* XFS_TRANS_DEBUG */ | |
| #ifdef XFS_BLI_TRACE | |
| ktrace_free(bip->bli_trace); | |
| #endif | |
| kmem_zone_free(xfs_buf_item_zone, bip); | |
| } | |
| /* | /* |
| * This is called when the buf log item is no longer needed. It should | * This is called when the buf log item is no longer needed. It should |
| * free the buf log item associated with the given buffer and clear | * free the buf log item associated with the given buffer and clear |
| Line 887 xfs_buf_item_relse( | Line 903 xfs_buf_item_relse( |
| (XFS_BUF_IODONE_FUNC(bp) != NULL)) { | (XFS_BUF_IODONE_FUNC(bp) != NULL)) { |
| XFS_BUF_CLR_IODONE_FUNC(bp); | XFS_BUF_CLR_IODONE_FUNC(bp); |
| } | } |
| xfs_buf_rele(bp); | |
| #ifdef XFS_TRANS_DEBUG | xfs_buf_item_free(bip); |
| kmem_free(bip->bli_orig); | |
| bip->bli_orig = NULL; | |
| kmem_free(bip->bli_logged); | |
| bip->bli_logged = NULL; | |
| #endif /* XFS_TRANS_DEBUG */ | |
| #ifdef XFS_BLI_TRACE | |
| ktrace_free(bip->bli_trace); | |
| #endif | |
| kmem_zone_free(xfs_buf_item_zone, bip); | |
| } | } |
| Line 1120 xfs_buf_iodone( | Line 1126 xfs_buf_iodone( |
| ASSERT(bip->bli_buf == bp); | ASSERT(bip->bli_buf == bp); |
| xfs_buf_rele(bp); | |
| mp = bip->bli_item.li_mountp; | mp = bip->bli_item.li_mountp; |
| /* | /* |
| Line 1136 xfs_buf_iodone( | Line 1143 xfs_buf_iodone( |
| * xfs_trans_delete_ail() drops the AIL lock. | * xfs_trans_delete_ail() drops the AIL lock. |
| */ | */ |
| xfs_trans_delete_ail(mp, (xfs_log_item_t *)bip); | xfs_trans_delete_ail(mp, (xfs_log_item_t *)bip); |
| xfs_buf_item_free(bip); | |
| #ifdef XFS_TRANS_DEBUG | |
| kmem_free(bip->bli_orig); | |
| bip->bli_orig = NULL; | |
| kmem_free(bip->bli_logged); | |
| bip->bli_logged = NULL; | |
| #endif /* XFS_TRANS_DEBUG */ | |
| #ifdef XFS_BLI_TRACE | |
| ktrace_free(bip->bli_trace); | |
| #endif | |
| kmem_zone_free(xfs_buf_item_zone, bip); | |
| } | } |
| #if defined(XFS_BLI_TRACE) | #if defined(XFS_BLI_TRACE) |