Merge branch 'xfs-4.9-reflink-prep' into for-next
This commit is contained in:
@@ -331,6 +331,22 @@ xfs_mp_fail_writes(struct xfs_mount *mp)
|
||||
}
|
||||
#endif
|
||||
|
||||
/* per-AG block reservation data structures*/
|
||||
enum xfs_ag_resv_type {
|
||||
XFS_AG_RESV_NONE = 0,
|
||||
XFS_AG_RESV_METADATA,
|
||||
XFS_AG_RESV_AGFL,
|
||||
};
|
||||
|
||||
struct xfs_ag_resv {
|
||||
/* number of blocks originally reserved here */
|
||||
xfs_extlen_t ar_orig_reserved;
|
||||
/* number of blocks reserved here */
|
||||
xfs_extlen_t ar_reserved;
|
||||
/* number of blocks originally asked for */
|
||||
xfs_extlen_t ar_asked;
|
||||
};
|
||||
|
||||
/*
|
||||
* Per-ag incore structure, copies of information in agf and agi, to improve the
|
||||
* performance of allocation group selection.
|
||||
@@ -378,8 +394,28 @@ typedef struct xfs_perag {
|
||||
/* for rcu-safe freeing */
|
||||
struct rcu_head rcu_head;
|
||||
int pagb_count; /* pagb slots in use */
|
||||
|
||||
/* Blocks reserved for all kinds of metadata. */
|
||||
struct xfs_ag_resv pag_meta_resv;
|
||||
/* Blocks reserved for just AGFL-based metadata. */
|
||||
struct xfs_ag_resv pag_agfl_resv;
|
||||
} xfs_perag_t;
|
||||
|
||||
static inline struct xfs_ag_resv *
|
||||
xfs_perag_resv(
|
||||
struct xfs_perag *pag,
|
||||
enum xfs_ag_resv_type type)
|
||||
{
|
||||
switch (type) {
|
||||
case XFS_AG_RESV_METADATA:
|
||||
return &pag->pag_meta_resv;
|
||||
case XFS_AG_RESV_AGFL:
|
||||
return &pag->pag_agfl_resv;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
extern void xfs_uuid_table_free(void);
|
||||
extern int xfs_log_sbcount(xfs_mount_t *);
|
||||
extern __uint64_t xfs_default_resblks(xfs_mount_t *mp);
|
||||
|
Reference in New Issue
Block a user