diff options
Diffstat (limited to 'fs/xfs/xfs_trans.h')
-rw-r--r-- | fs/xfs/xfs_trans.h | 322 |
1 files changed, 157 insertions, 165 deletions
diff --git a/fs/xfs/xfs_trans.h b/fs/xfs/xfs_trans.h index 74c80bd2b0ec..d6fe4a88d79f 100644 --- a/fs/xfs/xfs_trans.h +++ b/fs/xfs/xfs_trans.h | |||
@@ -18,6 +18,8 @@ | |||
18 | #ifndef __XFS_TRANS_H__ | 18 | #ifndef __XFS_TRANS_H__ |
19 | #define __XFS_TRANS_H__ | 19 | #define __XFS_TRANS_H__ |
20 | 20 | ||
21 | struct xfs_log_item; | ||
22 | |||
21 | /* | 23 | /* |
22 | * This is the structure written in the log at the head of | 24 | * This is the structure written in the log at the head of |
23 | * every transaction. It identifies the type and id of the | 25 | * every transaction. It identifies the type and id of the |
@@ -98,76 +100,6 @@ typedef struct xfs_trans_header { | |||
98 | #define XFS_TRANS_TYPE_MAX 41 | 100 | #define XFS_TRANS_TYPE_MAX 41 |
99 | /* new transaction types need to be reflected in xfs_logprint(8) */ | 101 | /* new transaction types need to be reflected in xfs_logprint(8) */ |
100 | 102 | ||
101 | |||
102 | #ifdef __KERNEL__ | ||
103 | struct xfs_buf; | ||
104 | struct xfs_buftarg; | ||
105 | struct xfs_efd_log_item; | ||
106 | struct xfs_efi_log_item; | ||
107 | struct xfs_inode; | ||
108 | struct xfs_item_ops; | ||
109 | struct xfs_log_iovec; | ||
110 | struct xfs_log_item; | ||
111 | struct xfs_log_item_desc; | ||
112 | struct xfs_mount; | ||
113 | struct xfs_trans; | ||
114 | struct xfs_dquot_acct; | ||
115 | |||
116 | typedef struct xfs_log_item { | ||
117 | struct list_head li_ail; /* AIL pointers */ | ||
118 | xfs_lsn_t li_lsn; /* last on-disk lsn */ | ||
119 | struct xfs_log_item_desc *li_desc; /* ptr to current desc*/ | ||
120 | struct xfs_mount *li_mountp; /* ptr to fs mount */ | ||
121 | uint li_type; /* item type */ | ||
122 | uint li_flags; /* misc flags */ | ||
123 | struct xfs_log_item *li_bio_list; /* buffer item list */ | ||
124 | void (*li_cb)(struct xfs_buf *, | ||
125 | struct xfs_log_item *); | ||
126 | /* buffer item iodone */ | ||
127 | /* callback func */ | ||
128 | struct xfs_item_ops *li_ops; /* function list */ | ||
129 | } xfs_log_item_t; | ||
130 | |||
131 | #define XFS_LI_IN_AIL 0x1 | ||
132 | #define XFS_LI_ABORTED 0x2 | ||
133 | |||
134 | typedef struct xfs_item_ops { | ||
135 | uint (*iop_size)(xfs_log_item_t *); | ||
136 | void (*iop_format)(xfs_log_item_t *, struct xfs_log_iovec *); | ||
137 | void (*iop_pin)(xfs_log_item_t *); | ||
138 | void (*iop_unpin)(xfs_log_item_t *, int); | ||
139 | void (*iop_unpin_remove)(xfs_log_item_t *, struct xfs_trans *); | ||
140 | uint (*iop_trylock)(xfs_log_item_t *); | ||
141 | void (*iop_unlock)(xfs_log_item_t *); | ||
142 | xfs_lsn_t (*iop_committed)(xfs_log_item_t *, xfs_lsn_t); | ||
143 | void (*iop_push)(xfs_log_item_t *); | ||
144 | void (*iop_pushbuf)(xfs_log_item_t *); | ||
145 | void (*iop_committing)(xfs_log_item_t *, xfs_lsn_t); | ||
146 | } xfs_item_ops_t; | ||
147 | |||
148 | #define IOP_SIZE(ip) (*(ip)->li_ops->iop_size)(ip) | ||
149 | #define IOP_FORMAT(ip,vp) (*(ip)->li_ops->iop_format)(ip, vp) | ||
150 | #define IOP_PIN(ip) (*(ip)->li_ops->iop_pin)(ip) | ||
151 | #define IOP_UNPIN(ip, flags) (*(ip)->li_ops->iop_unpin)(ip, flags) | ||
152 | #define IOP_UNPIN_REMOVE(ip,tp) (*(ip)->li_ops->iop_unpin_remove)(ip, tp) | ||
153 | #define IOP_TRYLOCK(ip) (*(ip)->li_ops->iop_trylock)(ip) | ||
154 | #define IOP_UNLOCK(ip) (*(ip)->li_ops->iop_unlock)(ip) | ||
155 | #define IOP_COMMITTED(ip, lsn) (*(ip)->li_ops->iop_committed)(ip, lsn) | ||
156 | #define IOP_PUSH(ip) (*(ip)->li_ops->iop_push)(ip) | ||
157 | #define IOP_PUSHBUF(ip) (*(ip)->li_ops->iop_pushbuf)(ip) | ||
158 | #define IOP_COMMITTING(ip, lsn) (*(ip)->li_ops->iop_committing)(ip, lsn) | ||
159 | |||
160 | /* | ||
161 | * Return values for the IOP_TRYLOCK() routines. | ||
162 | */ | ||
163 | #define XFS_ITEM_SUCCESS 0 | ||
164 | #define XFS_ITEM_PINNED 1 | ||
165 | #define XFS_ITEM_LOCKED 2 | ||
166 | #define XFS_ITEM_FLUSHING 3 | ||
167 | #define XFS_ITEM_PUSHBUF 4 | ||
168 | |||
169 | #endif /* __KERNEL__ */ | ||
170 | |||
171 | /* | 103 | /* |
172 | * This structure is used to track log items associated with | 104 | * This structure is used to track log items associated with |
173 | * a transaction. It points to the log item and keeps some | 105 | * a transaction. It points to the log item and keeps some |
@@ -176,7 +108,7 @@ typedef struct xfs_item_ops { | |||
176 | * once we get to commit processing (see xfs_trans_commit()). | 108 | * once we get to commit processing (see xfs_trans_commit()). |
177 | */ | 109 | */ |
178 | typedef struct xfs_log_item_desc { | 110 | typedef struct xfs_log_item_desc { |
179 | xfs_log_item_t *lid_item; | 111 | struct xfs_log_item *lid_item; |
180 | ushort lid_size; | 112 | ushort lid_size; |
181 | unsigned char lid_flags; | 113 | unsigned char lid_flags; |
182 | unsigned char lid_index; | 114 | unsigned char lid_index; |
@@ -276,94 +208,6 @@ xfs_lic_desc_to_chunk(xfs_log_item_desc_t *dp) | |||
276 | (xfs_caddr_t)(((xfs_log_item_chunk_t*)0)->lic_descs)); | 208 | (xfs_caddr_t)(((xfs_log_item_chunk_t*)0)->lic_descs)); |
277 | } | 209 | } |
278 | 210 | ||
279 | #ifdef __KERNEL__ | ||
280 | /* | ||
281 | * This structure is used to maintain a list of block ranges that have been | ||
282 | * freed in the transaction. The ranges are listed in the perag[] busy list | ||
283 | * between when they're freed and the transaction is committed to disk. | ||
284 | */ | ||
285 | |||
286 | typedef struct xfs_log_busy_slot { | ||
287 | xfs_agnumber_t lbc_ag; | ||
288 | ushort lbc_idx; /* index in perag.busy[] */ | ||
289 | } xfs_log_busy_slot_t; | ||
290 | |||
291 | #define XFS_LBC_NUM_SLOTS 31 | ||
292 | typedef struct xfs_log_busy_chunk { | ||
293 | struct xfs_log_busy_chunk *lbc_next; | ||
294 | uint lbc_free; /* free slots bitmask */ | ||
295 | ushort lbc_unused; /* first unused */ | ||
296 | xfs_log_busy_slot_t lbc_busy[XFS_LBC_NUM_SLOTS]; | ||
297 | } xfs_log_busy_chunk_t; | ||
298 | |||
299 | #define XFS_LBC_MAX_SLOT (XFS_LBC_NUM_SLOTS - 1) | ||
300 | #define XFS_LBC_FREEMASK ((1U << XFS_LBC_NUM_SLOTS) - 1) | ||
301 | |||
302 | #define XFS_LBC_INIT(cp) ((cp)->lbc_free = XFS_LBC_FREEMASK) | ||
303 | #define XFS_LBC_CLAIM(cp, slot) ((cp)->lbc_free &= ~(1 << (slot))) | ||
304 | #define XFS_LBC_SLOT(cp, slot) (&((cp)->lbc_busy[(slot)])) | ||
305 | #define XFS_LBC_VACANCY(cp) (((cp)->lbc_free) & XFS_LBC_FREEMASK) | ||
306 | #define XFS_LBC_ISFREE(cp, slot) ((cp)->lbc_free & (1 << (slot))) | ||
307 | |||
308 | /* | ||
309 | * This is the type of function which can be given to xfs_trans_callback() | ||
310 | * to be called upon the transaction's commit to disk. | ||
311 | */ | ||
312 | typedef void (*xfs_trans_callback_t)(struct xfs_trans *, void *); | ||
313 | |||
314 | /* | ||
315 | * This is the structure maintained for every active transaction. | ||
316 | */ | ||
317 | typedef struct xfs_trans { | ||
318 | unsigned int t_magic; /* magic number */ | ||
319 | xfs_log_callback_t t_logcb; /* log callback struct */ | ||
320 | unsigned int t_type; /* transaction type */ | ||
321 | unsigned int t_log_res; /* amt of log space resvd */ | ||
322 | unsigned int t_log_count; /* count for perm log res */ | ||
323 | unsigned int t_blk_res; /* # of blocks resvd */ | ||
324 | unsigned int t_blk_res_used; /* # of resvd blocks used */ | ||
325 | unsigned int t_rtx_res; /* # of rt extents resvd */ | ||
326 | unsigned int t_rtx_res_used; /* # of resvd rt extents used */ | ||
327 | xfs_log_ticket_t t_ticket; /* log mgr ticket */ | ||
328 | xfs_lsn_t t_lsn; /* log seq num of start of | ||
329 | * transaction. */ | ||
330 | xfs_lsn_t t_commit_lsn; /* log seq num of end of | ||
331 | * transaction. */ | ||
332 | struct xfs_mount *t_mountp; /* ptr to fs mount struct */ | ||
333 | struct xfs_dquot_acct *t_dqinfo; /* acctg info for dquots */ | ||
334 | xfs_trans_callback_t t_callback; /* transaction callback */ | ||
335 | void *t_callarg; /* callback arg */ | ||
336 | unsigned int t_flags; /* misc flags */ | ||
337 | int64_t t_icount_delta; /* superblock icount change */ | ||
338 | int64_t t_ifree_delta; /* superblock ifree change */ | ||
339 | int64_t t_fdblocks_delta; /* superblock fdblocks chg */ | ||
340 | int64_t t_res_fdblocks_delta; /* on-disk only chg */ | ||
341 | int64_t t_frextents_delta;/* superblock freextents chg*/ | ||
342 | int64_t t_res_frextents_delta; /* on-disk only chg */ | ||
343 | #ifdef DEBUG | ||
344 | int64_t t_ag_freeblks_delta; /* debugging counter */ | ||
345 | int64_t t_ag_flist_delta; /* debugging counter */ | ||
346 | int64_t t_ag_btree_delta; /* debugging counter */ | ||
347 | #endif | ||
348 | int64_t t_dblocks_delta;/* superblock dblocks change */ | ||
349 | int64_t t_agcount_delta;/* superblock agcount change */ | ||
350 | int64_t t_imaxpct_delta;/* superblock imaxpct change */ | ||
351 | int64_t t_rextsize_delta;/* superblock rextsize chg */ | ||
352 | int64_t t_rbmblocks_delta;/* superblock rbmblocks chg */ | ||
353 | int64_t t_rblocks_delta;/* superblock rblocks change */ | ||
354 | int64_t t_rextents_delta;/* superblocks rextents chg */ | ||
355 | int64_t t_rextslog_delta;/* superblocks rextslog chg */ | ||
356 | unsigned int t_items_free; /* log item descs free */ | ||
357 | xfs_log_item_chunk_t t_items; /* first log item desc chunk */ | ||
358 | xfs_trans_header_t t_header; /* header for in-log trans */ | ||
359 | unsigned int t_busy_free; /* busy descs free */ | ||
360 | xfs_log_busy_chunk_t t_busy; /* busy/async free blocks */ | ||
361 | unsigned long t_pflags; /* saved process flags state */ | ||
362 | } xfs_trans_t; | ||
363 | |||
364 | #endif /* __KERNEL__ */ | ||
365 | |||
366 | |||
367 | #define XFS_TRANS_MAGIC 0x5452414E /* 'TRAN' */ | 211 | #define XFS_TRANS_MAGIC 0x5452414E /* 'TRAN' */ |
368 | /* | 212 | /* |
369 | * Values for t_flags. | 213 | * Values for t_flags. |
@@ -906,6 +750,157 @@ typedef struct xfs_trans { | |||
906 | #define XFS_DQUOT_REF 1 | 750 | #define XFS_DQUOT_REF 1 |
907 | 751 | ||
908 | #ifdef __KERNEL__ | 752 | #ifdef __KERNEL__ |
753 | |||
754 | struct xfs_buf; | ||
755 | struct xfs_buftarg; | ||
756 | struct xfs_efd_log_item; | ||
757 | struct xfs_efi_log_item; | ||
758 | struct xfs_inode; | ||
759 | struct xfs_item_ops; | ||
760 | struct xfs_log_iovec; | ||
761 | struct xfs_log_item_desc; | ||
762 | struct xfs_mount; | ||
763 | struct xfs_trans; | ||
764 | struct xfs_dquot_acct; | ||
765 | |||
766 | typedef struct xfs_log_item { | ||
767 | struct list_head li_ail; /* AIL pointers */ | ||
768 | xfs_lsn_t li_lsn; /* last on-disk lsn */ | ||
769 | struct xfs_log_item_desc *li_desc; /* ptr to current desc*/ | ||
770 | struct xfs_mount *li_mountp; /* ptr to fs mount */ | ||
771 | struct xfs_ail *li_ailp; /* ptr to AIL */ | ||
772 | uint li_type; /* item type */ | ||
773 | uint li_flags; /* misc flags */ | ||
774 | struct xfs_log_item *li_bio_list; /* buffer item list */ | ||
775 | void (*li_cb)(struct xfs_buf *, | ||
776 | struct xfs_log_item *); | ||
777 | /* buffer item iodone */ | ||
778 | /* callback func */ | ||
779 | struct xfs_item_ops *li_ops; /* function list */ | ||
780 | } xfs_log_item_t; | ||
781 | |||
782 | #define XFS_LI_IN_AIL 0x1 | ||
783 | #define XFS_LI_ABORTED 0x2 | ||
784 | |||
785 | typedef struct xfs_item_ops { | ||
786 | uint (*iop_size)(xfs_log_item_t *); | ||
787 | void (*iop_format)(xfs_log_item_t *, struct xfs_log_iovec *); | ||
788 | void (*iop_pin)(xfs_log_item_t *); | ||
789 | void (*iop_unpin)(xfs_log_item_t *, int); | ||
790 | void (*iop_unpin_remove)(xfs_log_item_t *, struct xfs_trans *); | ||
791 | uint (*iop_trylock)(xfs_log_item_t *); | ||
792 | void (*iop_unlock)(xfs_log_item_t *); | ||
793 | xfs_lsn_t (*iop_committed)(xfs_log_item_t *, xfs_lsn_t); | ||
794 | void (*iop_push)(xfs_log_item_t *); | ||
795 | void (*iop_pushbuf)(xfs_log_item_t *); | ||
796 | void (*iop_committing)(xfs_log_item_t *, xfs_lsn_t); | ||
797 | } xfs_item_ops_t; | ||
798 | |||
799 | #define IOP_SIZE(ip) (*(ip)->li_ops->iop_size)(ip) | ||
800 | #define IOP_FORMAT(ip,vp) (*(ip)->li_ops->iop_format)(ip, vp) | ||
801 | #define IOP_PIN(ip) (*(ip)->li_ops->iop_pin)(ip) | ||
802 | #define IOP_UNPIN(ip, flags) (*(ip)->li_ops->iop_unpin)(ip, flags) | ||
803 | #define IOP_UNPIN_REMOVE(ip,tp) (*(ip)->li_ops->iop_unpin_remove)(ip, tp) | ||
804 | #define IOP_TRYLOCK(ip) (*(ip)->li_ops->iop_trylock)(ip) | ||
805 | #define IOP_UNLOCK(ip) (*(ip)->li_ops->iop_unlock)(ip) | ||
806 | #define IOP_COMMITTED(ip, lsn) (*(ip)->li_ops->iop_committed)(ip, lsn) | ||
807 | #define IOP_PUSH(ip) (*(ip)->li_ops->iop_push)(ip) | ||
808 | #define IOP_PUSHBUF(ip) (*(ip)->li_ops->iop_pushbuf)(ip) | ||
809 | #define IOP_COMMITTING(ip, lsn) (*(ip)->li_ops->iop_committing)(ip, lsn) | ||
810 | |||
811 | /* | ||
812 | * Return values for the IOP_TRYLOCK() routines. | ||
813 | */ | ||
814 | #define XFS_ITEM_SUCCESS 0 | ||
815 | #define XFS_ITEM_PINNED 1 | ||
816 | #define XFS_ITEM_LOCKED 2 | ||
817 | #define XFS_ITEM_FLUSHING 3 | ||
818 | #define XFS_ITEM_PUSHBUF 4 | ||
819 | |||
820 | /* | ||
821 | * This structure is used to maintain a list of block ranges that have been | ||
822 | * freed in the transaction. The ranges are listed in the perag[] busy list | ||
823 | * between when they're freed and the transaction is committed to disk. | ||
824 | */ | ||
825 | |||
826 | typedef struct xfs_log_busy_slot { | ||
827 | xfs_agnumber_t lbc_ag; | ||
828 | ushort lbc_idx; /* index in perag.busy[] */ | ||
829 | } xfs_log_busy_slot_t; | ||
830 | |||
831 | #define XFS_LBC_NUM_SLOTS 31 | ||
832 | typedef struct xfs_log_busy_chunk { | ||
833 | struct xfs_log_busy_chunk *lbc_next; | ||
834 | uint lbc_free; /* free slots bitmask */ | ||
835 | ushort lbc_unused; /* first unused */ | ||
836 | xfs_log_busy_slot_t lbc_busy[XFS_LBC_NUM_SLOTS]; | ||
837 | } xfs_log_busy_chunk_t; | ||
838 | |||
839 | #define XFS_LBC_MAX_SLOT (XFS_LBC_NUM_SLOTS - 1) | ||
840 | #define XFS_LBC_FREEMASK ((1U << XFS_LBC_NUM_SLOTS) - 1) | ||
841 | |||
842 | #define XFS_LBC_INIT(cp) ((cp)->lbc_free = XFS_LBC_FREEMASK) | ||
843 | #define XFS_LBC_CLAIM(cp, slot) ((cp)->lbc_free &= ~(1 << (slot))) | ||
844 | #define XFS_LBC_SLOT(cp, slot) (&((cp)->lbc_busy[(slot)])) | ||
845 | #define XFS_LBC_VACANCY(cp) (((cp)->lbc_free) & XFS_LBC_FREEMASK) | ||
846 | #define XFS_LBC_ISFREE(cp, slot) ((cp)->lbc_free & (1 << (slot))) | ||
847 | |||
848 | /* | ||
849 | * This is the type of function which can be given to xfs_trans_callback() | ||
850 | * to be called upon the transaction's commit to disk. | ||
851 | */ | ||
852 | typedef void (*xfs_trans_callback_t)(struct xfs_trans *, void *); | ||
853 | |||
854 | /* | ||
855 | * This is the structure maintained for every active transaction. | ||
856 | */ | ||
857 | typedef struct xfs_trans { | ||
858 | unsigned int t_magic; /* magic number */ | ||
859 | xfs_log_callback_t t_logcb; /* log callback struct */ | ||
860 | unsigned int t_type; /* transaction type */ | ||
861 | unsigned int t_log_res; /* amt of log space resvd */ | ||
862 | unsigned int t_log_count; /* count for perm log res */ | ||
863 | unsigned int t_blk_res; /* # of blocks resvd */ | ||
864 | unsigned int t_blk_res_used; /* # of resvd blocks used */ | ||
865 | unsigned int t_rtx_res; /* # of rt extents resvd */ | ||
866 | unsigned int t_rtx_res_used; /* # of resvd rt extents used */ | ||
867 | xfs_log_ticket_t t_ticket; /* log mgr ticket */ | ||
868 | xfs_lsn_t t_lsn; /* log seq num of start of | ||
869 | * transaction. */ | ||
870 | xfs_lsn_t t_commit_lsn; /* log seq num of end of | ||
871 | * transaction. */ | ||
872 | struct xfs_mount *t_mountp; /* ptr to fs mount struct */ | ||
873 | struct xfs_dquot_acct *t_dqinfo; /* acctg info for dquots */ | ||
874 | xfs_trans_callback_t t_callback; /* transaction callback */ | ||
875 | void *t_callarg; /* callback arg */ | ||
876 | unsigned int t_flags; /* misc flags */ | ||
877 | int64_t t_icount_delta; /* superblock icount change */ | ||
878 | int64_t t_ifree_delta; /* superblock ifree change */ | ||
879 | int64_t t_fdblocks_delta; /* superblock fdblocks chg */ | ||
880 | int64_t t_res_fdblocks_delta; /* on-disk only chg */ | ||
881 | int64_t t_frextents_delta;/* superblock freextents chg*/ | ||
882 | int64_t t_res_frextents_delta; /* on-disk only chg */ | ||
883 | #ifdef DEBUG | ||
884 | int64_t t_ag_freeblks_delta; /* debugging counter */ | ||
885 | int64_t t_ag_flist_delta; /* debugging counter */ | ||
886 | int64_t t_ag_btree_delta; /* debugging counter */ | ||
887 | #endif | ||
888 | int64_t t_dblocks_delta;/* superblock dblocks change */ | ||
889 | int64_t t_agcount_delta;/* superblock agcount change */ | ||
890 | int64_t t_imaxpct_delta;/* superblock imaxpct change */ | ||
891 | int64_t t_rextsize_delta;/* superblock rextsize chg */ | ||
892 | int64_t t_rbmblocks_delta;/* superblock rbmblocks chg */ | ||
893 | int64_t t_rblocks_delta;/* superblock rblocks change */ | ||
894 | int64_t t_rextents_delta;/* superblocks rextents chg */ | ||
895 | int64_t t_rextslog_delta;/* superblocks rextslog chg */ | ||
896 | unsigned int t_items_free; /* log item descs free */ | ||
897 | xfs_log_item_chunk_t t_items; /* first log item desc chunk */ | ||
898 | xfs_trans_header_t t_header; /* header for in-log trans */ | ||
899 | unsigned int t_busy_free; /* busy descs free */ | ||
900 | xfs_log_busy_chunk_t t_busy; /* busy/async free blocks */ | ||
901 | unsigned long t_pflags; /* saved process flags state */ | ||
902 | } xfs_trans_t; | ||
903 | |||
909 | /* | 904 | /* |
910 | * XFS transaction mechanism exported interfaces that are | 905 | * XFS transaction mechanism exported interfaces that are |
911 | * actually macros. | 906 | * actually macros. |
@@ -928,7 +923,6 @@ typedef struct xfs_trans { | |||
928 | /* | 923 | /* |
929 | * XFS transaction mechanism exported interfaces. | 924 | * XFS transaction mechanism exported interfaces. |
930 | */ | 925 | */ |
931 | void xfs_trans_init(struct xfs_mount *); | ||
932 | xfs_trans_t *xfs_trans_alloc(struct xfs_mount *, uint); | 926 | xfs_trans_t *xfs_trans_alloc(struct xfs_mount *, uint); |
933 | xfs_trans_t *_xfs_trans_alloc(struct xfs_mount *, uint); | 927 | xfs_trans_t *_xfs_trans_alloc(struct xfs_mount *, uint); |
934 | xfs_trans_t *xfs_trans_dup(xfs_trans_t *); | 928 | xfs_trans_t *xfs_trans_dup(xfs_trans_t *); |
@@ -975,13 +969,8 @@ int _xfs_trans_commit(xfs_trans_t *, | |||
975 | int *); | 969 | int *); |
976 | #define xfs_trans_commit(tp, flags) _xfs_trans_commit(tp, flags, NULL) | 970 | #define xfs_trans_commit(tp, flags) _xfs_trans_commit(tp, flags, NULL) |
977 | void xfs_trans_cancel(xfs_trans_t *, int); | 971 | void xfs_trans_cancel(xfs_trans_t *, int); |
978 | int xfs_trans_roll(struct xfs_trans **, struct xfs_inode *); | ||
979 | int xfs_trans_ail_init(struct xfs_mount *); | 972 | int xfs_trans_ail_init(struct xfs_mount *); |
980 | void xfs_trans_ail_destroy(struct xfs_mount *); | 973 | void xfs_trans_ail_destroy(struct xfs_mount *); |
981 | void xfs_trans_push_ail(struct xfs_mount *, xfs_lsn_t); | ||
982 | xfs_lsn_t xfs_trans_tail_ail(struct xfs_mount *); | ||
983 | void xfs_trans_unlocked_item(struct xfs_mount *, | ||
984 | xfs_log_item_t *); | ||
985 | xfs_log_busy_slot_t *xfs_trans_add_busy(xfs_trans_t *tp, | 974 | xfs_log_busy_slot_t *xfs_trans_add_busy(xfs_trans_t *tp, |
986 | xfs_agnumber_t ag, | 975 | xfs_agnumber_t ag, |
987 | xfs_extlen_t idx); | 976 | xfs_extlen_t idx); |
@@ -990,4 +979,7 @@ extern kmem_zone_t *xfs_trans_zone; | |||
990 | 979 | ||
991 | #endif /* __KERNEL__ */ | 980 | #endif /* __KERNEL__ */ |
992 | 981 | ||
982 | void xfs_trans_init(struct xfs_mount *); | ||
983 | int xfs_trans_roll(struct xfs_trans **, struct xfs_inode *); | ||
984 | |||
993 | #endif /* __XFS_TRANS_H__ */ | 985 | #endif /* __XFS_TRANS_H__ */ |