diff options
Diffstat (limited to 'fs/xfs/xfs_trans.h')
| -rw-r--r-- | fs/xfs/xfs_trans.h | 35 |
1 files changed, 2 insertions, 33 deletions
diff --git a/fs/xfs/xfs_trans.h b/fs/xfs/xfs_trans.h index c62beee0921e..ff7e9e6eee84 100644 --- a/fs/xfs/xfs_trans.h +++ b/fs/xfs/xfs_trans.h | |||
| @@ -813,6 +813,7 @@ struct xfs_log_item_desc; | |||
| 813 | struct xfs_mount; | 813 | struct xfs_mount; |
| 814 | struct xfs_trans; | 814 | struct xfs_trans; |
| 815 | struct xfs_dquot_acct; | 815 | struct xfs_dquot_acct; |
| 816 | struct xfs_busy_extent; | ||
| 816 | 817 | ||
| 817 | typedef struct xfs_log_item { | 818 | typedef struct xfs_log_item { |
| 818 | struct list_head li_ail; /* AIL pointers */ | 819 | struct list_head li_ail; /* AIL pointers */ |
| @@ -872,34 +873,6 @@ typedef struct xfs_item_ops { | |||
| 872 | #define XFS_ITEM_PUSHBUF 3 | 873 | #define XFS_ITEM_PUSHBUF 3 |
| 873 | 874 | ||
| 874 | /* | 875 | /* |
| 875 | * This structure is used to maintain a list of block ranges that have been | ||
| 876 | * freed in the transaction. The ranges are listed in the perag[] busy list | ||
| 877 | * between when they're freed and the transaction is committed to disk. | ||
| 878 | */ | ||
| 879 | |||
| 880 | typedef struct xfs_log_busy_slot { | ||
| 881 | xfs_agnumber_t lbc_ag; | ||
| 882 | ushort lbc_idx; /* index in perag.busy[] */ | ||
| 883 | } xfs_log_busy_slot_t; | ||
| 884 | |||
| 885 | #define XFS_LBC_NUM_SLOTS 31 | ||
| 886 | typedef struct xfs_log_busy_chunk { | ||
| 887 | struct xfs_log_busy_chunk *lbc_next; | ||
| 888 | uint lbc_free; /* free slots bitmask */ | ||
| 889 | ushort lbc_unused; /* first unused */ | ||
| 890 | xfs_log_busy_slot_t lbc_busy[XFS_LBC_NUM_SLOTS]; | ||
| 891 | } xfs_log_busy_chunk_t; | ||
| 892 | |||
| 893 | #define XFS_LBC_MAX_SLOT (XFS_LBC_NUM_SLOTS - 1) | ||
| 894 | #define XFS_LBC_FREEMASK ((1U << XFS_LBC_NUM_SLOTS) - 1) | ||
| 895 | |||
| 896 | #define XFS_LBC_INIT(cp) ((cp)->lbc_free = XFS_LBC_FREEMASK) | ||
| 897 | #define XFS_LBC_CLAIM(cp, slot) ((cp)->lbc_free &= ~(1 << (slot))) | ||
| 898 | #define XFS_LBC_SLOT(cp, slot) (&((cp)->lbc_busy[(slot)])) | ||
| 899 | #define XFS_LBC_VACANCY(cp) (((cp)->lbc_free) & XFS_LBC_FREEMASK) | ||
| 900 | #define XFS_LBC_ISFREE(cp, slot) ((cp)->lbc_free & (1 << (slot))) | ||
| 901 | |||
| 902 | /* | ||
| 903 | * This is the type of function which can be given to xfs_trans_callback() | 876 | * This is the type of function which can be given to xfs_trans_callback() |
| 904 | * to be called upon the transaction's commit to disk. | 877 | * to be called upon the transaction's commit to disk. |
| 905 | */ | 878 | */ |
| @@ -950,8 +923,7 @@ typedef struct xfs_trans { | |||
| 950 | unsigned int t_items_free; /* log item descs free */ | 923 | unsigned int t_items_free; /* log item descs free */ |
| 951 | xfs_log_item_chunk_t t_items; /* first log item desc chunk */ | 924 | xfs_log_item_chunk_t t_items; /* first log item desc chunk */ |
| 952 | xfs_trans_header_t t_header; /* header for in-log trans */ | 925 | xfs_trans_header_t t_header; /* header for in-log trans */ |
| 953 | unsigned int t_busy_free; /* busy descs free */ | 926 | struct list_head t_busy; /* list of busy extents */ |
| 954 | xfs_log_busy_chunk_t t_busy; /* busy/async free blocks */ | ||
| 955 | unsigned long t_pflags; /* saved process flags state */ | 927 | unsigned long t_pflags; /* saved process flags state */ |
| 956 | } xfs_trans_t; | 928 | } xfs_trans_t; |
| 957 | 929 | ||
| @@ -1025,9 +997,6 @@ int _xfs_trans_commit(xfs_trans_t *, | |||
| 1025 | void xfs_trans_cancel(xfs_trans_t *, int); | 997 | void xfs_trans_cancel(xfs_trans_t *, int); |
| 1026 | int xfs_trans_ail_init(struct xfs_mount *); | 998 | int xfs_trans_ail_init(struct xfs_mount *); |
| 1027 | void xfs_trans_ail_destroy(struct xfs_mount *); | 999 | void xfs_trans_ail_destroy(struct xfs_mount *); |
| 1028 | xfs_log_busy_slot_t *xfs_trans_add_busy(xfs_trans_t *tp, | ||
| 1029 | xfs_agnumber_t ag, | ||
| 1030 | xfs_extlen_t idx); | ||
| 1031 | 1000 | ||
| 1032 | extern kmem_zone_t *xfs_trans_zone; | 1001 | extern kmem_zone_t *xfs_trans_zone; |
| 1033 | 1002 | ||
